简体   繁体   中英

Random Number from 0 to 1000 Math.random()

Currently making a program for homework and I am confused regarding one aspect of the normal formula that is usually used

Math.random() * (max - min) + min

I understand that this would work perfectly fine with a range of 1 - 1000 for example.

Now, sorry for my ignorance and if this comes out as a stupid question... but if I want a range from 0 - 1000 , would this still work?

Since the range 1 - 1000 would set (max - min) as 999, then multiply by Math.random() and then add min ... range 0 - 1000 would set (max - min) as 1000 and would not add anything at the end since its still 0. Would this still work if I have min as 0 and max as 1000? Or would I have to go through a different route/formula?

Math.random() returns random nr range 0 to 1, so to get range 0 to 1000 all you need to do is to multiply by 1000. No need to add anything, so the formula will still work

Let's break down the formula to see if it helps!

Given that Math.random() returns a double which has value 0 <= value < 1 , when:

  • min = 1 , the formula returns values between 1 ( 0 * (1000 - 1) + 1 = 1 ) and 999 ( 0.999999... * (1000 - 1) + 1 = 999 )
  • min = 0 , the formula returns values between 0 ( 0 * (1000 - 0) + 0 = 0 ) and 999 ( 0.999999... * (1000 - 0) + 0 = 999 )

So, min = 0 works as you'd expect but it seems like you're missing a +1 in the formula's range term:

Generating an integer random number in a range with Math.random() is done by this formula: (int)(Math.random() * ((max - min) + 1)) + min

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM