【发布时间】:2015-02-05 10:45:34
【问题描述】:
所以我试图让我的代码根据用户输入的内容生成随机数。而我目前的陈述没有产生正确的范围。
secretNum = low + (int)(Math.random()* max);
其中低是范围的最低部分,而高是最高的。例如。如果低是 5,高是 10,这会产生 1-50 的范围吗? (5*10)。
【问题讨论】:
所以我试图让我的代码根据用户输入的内容生成随机数。而我目前的陈述没有产生正确的范围。
secretNum = low + (int)(Math.random()* max);
其中低是范围的最低部分,而高是最高的。例如。如果低是 5,高是 10,这会产生 1-50 的范围吗? (5*10)。
【问题讨论】:
我会为此使用Random object。
你可以这样创建它:
Random r = new Random();
然后从那里开始,它非常易于使用。对于从 0(含)到 50(不含)的随机 int,只需执行以下操作:
int randomNumber = r.nextInt(50);
我认为这对您来说更容易。如果用户输入 10 和 140,那么你可以这样做:
int lowest = 10;
int highest = 140;
int randomMax = 140-10;
int randomNumber = r.nextInt(randomMax) + 10;
这可能是最简单的方法。
【讨论】:
您将用户输入保存在变量in:
String in = sc.nextLine();
然后创建java.util.Random 的实例,种子是输入的哈希:
Random r = new Random(in.hashCode());
int randomNumber = r.nextInt();
如果你想生成一个介于最大值和最小值之间的随机数,请参阅this Question 或者this one但是你需要将c++转换成java:
C++:
output = min + (rand() % (int)(max - min + 1))
Java:
output = min + (r.nextInt() % (max - min + 1))
如果你只需要一个最大值,你也可以使用r.nextInt(max)。
注意: 对于加密安全的随机数,请使用 SecureRandom 的实例
【讨论】: