Skip to content

Lesson Generate Random Whole Numbers within a Range

Rafael J. Rodriguez edited this page Jan 6, 2017 · 2 revisions

Author

@Rafase282

Created by Rafase282

Github | FreeCodeCamp | CodePen | LinkedIn | Website | E-Mail

Note This is a mix of my page and FCC's

Generate Random Whole Numbers within a Range

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

Explanation

Math.random() creates a floating point number between 0 (inclusive) and 1 (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 between 0 (inclusive) and 7 (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). 😃

Getting Started

  1. Welcome!
  2. Contact
  3. Get Started with Free Code Camp

Front End Development Certification

  1. HTML5 and CSS
  2. Responsive Design with Bootstrap
  3. Gear up for Success
  4. jQuery
  5. Basic JavaScript
  6. Object Oriented and Functional Programming
  7. Basic Algorithm Scripting
  8. Basic Front End Development Projects
  9. Intermediate Algorithm Scripting
  10. JSON APIs and Ajax
  11. Intermediate Front End Development Projects
  12. Claim Your Front End Development Certificate

Data Visualization Certification

  1. SASS
  2. React
  3. React Projects
  4. D3
  5. Data Visualization Projects
  6. Claim Your Data Visualization Certificate

Back End Development Certification

  1. Upper Intermediate Algorithm Scripting
  2. Automated Testing and Debugging
  3. Advanced Algorithm Scripting
  4. AngularJS (Legacy Material)
  5. Git
  6. Node.js and Express.js
  7. MongoDB
  8. API Projects
  9. Dynamic Web Applications
  10. Claim Your Back End Development Certificate

Full Stack Development Certification

  1. Greefield Nonprofit Project 1
  2. Greefield Nonprofit Project 2
  3. Legacy Nonprofit Project 1
  4. Legacy Nonprofit Project 2
  5. Claim your Full Stack Development Certification

Coding Interview Preparation

  1. Whiteboard Coding Interview Training
  2. Critical Thinking Interview Training
  3. Mock Interview 1
  4. Mock Interview 2
  5. Mock Interview 3
Clone this wiki locally