-
Notifications
You must be signed in to change notification settings - Fork 341
Lesson Generate Random Whole Numbers within a Range
Created by Rafase282
Github | FreeCodeCamp | CodePen | LinkedIn | Website | E-Mail
Note This is a mix of my page and FCC's
We can use a certain mathematical expression to get a random number between two numbers.
Math.floor(Math.random() * (max - min + 1)) + min
See Also: 📜 Explanation | Explanation in SO
Math.random()
creates a floating point number between0
(inclusive) and1
(exclusive)
Q: Create a random whole number between 2
(inclusive, min) and 6
(inclusive, max) i.e. create a random whole number between min
(inclusive) and max (inclusive)
A: Math.floor(Math.random() * (6 - 2 + 1)) + 2
Let's write Math.random() * max
which creates a floating point number between 0
(inclusive) and max
(exclusive).
E.g. Math.random() * 6
generates a random floating point number between 0
(inclusive) and 6
(exclusive).
But we need to generate a whole number between 0
(inclusive) and max
(inclusive) first. So we do a trick 😉.
What if we create a number between 0
and max + 1
. That way, we also include the max
number. And then apply the Math.floor
method on the result to get a whole number between 0
(inclusive, min) and max
(inclusive).
We can write it as Math.floor(Math.random() * (max + 1))
.
E.g. Math.floor(Math.random() * (6 + 1))
generates a random floating point number between 0
(inclusive, min) and 6
(inclusive, max).
0 1 2 3 4 5 6
The
Math.random() * (6 + 1)
part generates a floating point number between0
(inclusive) and7
(exclusive).
0..1..2..3..4..5..6..
But that doesn't solve our given question yet 😞. We need to generate a random whole number between min
(inclusive) and max
(inclusive). So we need another trick 😉.
What if we write Math.floor(Math.random() * ((max + 1) - min))
that will generate a whole number between 0
and (max + 1) - min
.
E.g. Math.floor(Math.random() * ((6 + 1) - 2))
= Math.floor(Math.random() * 5)
that will generate a whole number between 0
(inclusive) and 4
(inclusive).
0 1 2 3 4
But still the question is unsolved 😞. We need the random number between min
(inclusive) and max
(inclusive).
So we simply write Math.floor(Math.random() * ((max + 1) - min)) + min
😜.
E.g. Math.floor(Math.random() * ((6 + 1) - 2)) + 2
= Math.floor(Math.random() * 5) + 2
2 3 4 5 6
Now this answers our given question. Math.floor(Math.random() * (max - min + 1) + min
correctly generates a random number between min
(inclusive) and max
(inclusive) i.e. it generates a random whole number between 2
(inclusive) and 6
(inclusive). 😃
Thanks for visiting, if you like this please feel free to star my repo, follow me or even contact me about contributing as it will be a lot of work and having help would be cool.
- HTML5 and CSS
- Responsive Design with Bootstrap
- Gear up for Success
- jQuery
- Basic JavaScript
- Object Oriented and Functional Programming
- Basic Algorithm Scripting
- Basic Front End Development Projects
- Intermediate Algorithm Scripting
- JSON APIs and Ajax
- Intermediate Front End Development Projects
- Claim Your Front End Development Certificate
- Upper Intermediate Algorithm Scripting
- Automated Testing and Debugging
- Advanced Algorithm Scripting
- AngularJS (Legacy Material)
- Git
- Node.js and Express.js
- MongoDB
- API Projects
- Dynamic Web Applications
- Claim Your Back End Development Certificate
- Greefield Nonprofit Project 1
- Greefield Nonprofit Project 2
- Legacy Nonprofit Project 1
- Legacy Nonprofit Project 2
- Claim your Full Stack Development Certification
- Whiteboard Coding Interview Training
- Critical Thinking Interview Training
- Mock Interview 1
- Mock Interview 2
- Mock Interview 3