所以我想让我的代码得到一个基于用户输入的随机数生成。而我目前的声明并没有产生适当的范围。获取用户输入的范围内的随机生成
secretNum = low + (int)(Math.random()* max);
其中低位是范围的最低部分,高位是最高位置。例如。如果低为5,高为10,这是否会产生1-50的范围? (5 * 10)。
所以我想让我的代码得到一个基于用户输入的随机数生成。而我目前的声明并没有产生适当的范围。获取用户输入的范围内的随机生成
secretNum = low + (int)(Math.random()* max);
其中低位是范围的最低部分,高位是最高位置。例如。如果低为5,高为10,这是否会产生1-50的范围? (5 * 10)。
必须使用这 -
secretNum = min + (int)(Math.random() * ((max - min) + 1));
如果低为3,例如,高为7,随机数将是要么-3,4,5,6-或7
我想用这个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))
爪哇:
output = min + (r.nextInt() % (max - min + 1))