Getting random numbers in Java
Possible Duplicate:
Java: generating random number in a range
我想得到一个随机值在1到50在爪哇。
我怎样才能在Math.random();的帮助下做到这一点?
如何绑定math.random()返回的值?
- 最好使用随机而不是数学随机。随机是更有效和更少的偏见。
- XKCD.COM/221
第一种解决方案是使用java.util.Random类:
1 2 3 4 5 6 7 8 9 10
| import java.util.Random;
Random rand = new Random();
// Obtain a number between [0 - 49].
int n = rand. nextInt(50);
// Add 1 to the result to get a number from the required range
// (i.e., [1 - 50]).
n += 1; |
另一种解决方案是使用Math.random():
1
| double random = Math. random() * 49 + 1; |
或
1
| int random = (int)(Math. random() * 50 + 1); |
- 所以,如果我取45作为最小值,rand.nextInt(50)返回30,我得到一个介于45和50之间的值?嗯…好啊。。。
- @丹尼尔的困惑是可以理解的,因为答案中的评论具有误导性。在这种情况下,rand.nextInt(50)中的50只给出最大值。rand.nextInt(50)将返回一个介于0(包含)和50(仅限)之间的整数(换句话说〔0-49〕)。我们加1得到[1-50]。所以,如果你将45作为最小值,并将其添加到rand.nextint(50),你将得到一个介于45和94之间的值(包括45和94)。
- @真的。rand.nextInt(1)只返回0,不返回1或0。
- 小心!!UTI.RADION已经在Java 8实现。
- 它将输出1到49
- 因此,rand.nextint(6)+45将生成随机数45-50
- Popeye是的。下一步(6)会给你[0-5]加上45使其成为[45-50]
1 2
| int max = 50;
int min = 1; |
1。使用math.random()。
1 2 3
| double random = Math. random() * 49 + 1;
or
int random = (int )(Math. random() * 50 + 1); |
如果是int,这个值将从1到50或1.0(含)至50.0(不含),如果是双份
Why?
random() method returns a random
number between 0.0 and 0.9..., you
multiply it by 50, so upper limit
becomes 0.0 to 49.999... when you add 1, it becomes 1.0 to 50.999..., now when you truncate to int, you get 1 to 50. (thanks to @rup in comments). leepoint's awesome write-up on both the approaches.
2。在Java中使用随机类。
这将给出0到49之间的值。
对于1到50:rand.nextInt((max - min) + 1) + min;。
一些Java随机源的惊人之处。
- "0.0到50.0,当你加1时,它就变成1.0到50.0",肯定是不对的?那里一定有49或51个。
- @ Blorgbeard引用的错误;结果大于或等于0但严格小于1([文档](下载.Oracle .COM/JavaSe/ 6 /DOCS/API/Java/‌&8203;Lang//Helip;)。所以它是0.0到49.999等,当你加1时,它变成1到50.999等,当你截为int时,它变成1到50。
- 例如,它不适用于所有范围。当我试图得到一个28到7之间的数字时,它给了我31
- @Maysara I更新了第二个示例以处理随机范围。具体的例子是从1-50开始使用。
- 如果你想要8到50之间的数字,你会得到8到58之间的值。你需要一个这样的公式来纠正它。……(int)(math.random()*(50-8)+8)
- 当然,Java中的所有解决方案都需要解决问题。谢谢你
- 有用的答案。谢谢