我正在寻找一种从 0-x 生成随机整数的方法,其中 x 由人类用户在运行时定义。但是,这些数字的一半必须大于零且小于或等于 5 (0,5],另一半必须在 [6,x] 的集合中。
我知道下面的代码会从 0-x 生成一个数字。主要问题是确保其中一半在 (0,5]
Math.random() * x;
我不是在找人为我做这件事,只是在寻找一些提示。谢谢!
最佳答案
您可以先掷一枚硬币,然后根据该硬币生成较大或较小的数字:
final Random rnd = new Random();
while (true)
System.out.println(rnd.nextBoolean()? rnd.nextInt(6) : 6 + rnd.nextInt(x-5));
或者,使用笨拙的 Math.random()
(在范围的边缘肯定会遇到麻烦):
while (true)
System.out.println(Math.floor(
math.random() < 0.5 ? (Math.random() * 6) : (6 + (x-5) * Math.random())
));
仅将此视为提示:)
关于java - 生成介于 0 和某个值之间的随机整数,其中一半在集合 (0,5] 中,另一半在 (5,x],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12957219/