-
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