我正在尝试生成一个大于和小于前一个随机数的随机数,但无法弄清楚该怎么做。
到目前为止,我有:
number = (int)( max * Math.random() ) + min;
guess = (int)( max * Math.random() ) + min;
if (guess<number)
{
guess = (int)( max * Math.random() ) + min;
System.out.println(guess);
}
else if (guess>number)
{
guess = (int)( max * Math.random() ) + min;
System.out.println(guess);
}
更新:如何确保它不会生成已经生成的随机数?计算机有10次尝试猜测所生成的数字,但是我想使其逻辑化,从而不会生成已经知道是错误的数字。
如何订购随机数列表...
public static void method2() throws Exception {
Random rng = new SecureRandom();
Set<Integer> numbers = new HashSet<>();
while (numbers.size() < 3) {
// number only added if not already present in Set, set values are unique
numbers.add(rng.nextInt(MAX));
}
List<Integer> numberList = new ArrayList<>(numbers);
Collections.sort(numberList);
// lower random at index 0, mid at index 1
// you can guess where the other one is hiding
System.out.println(numberList);
}
我首先将它们放在一组中以确保没有重复项。当然,如果MAX
值为1 ,则可能需要一段时间。
这种方法的优点之一是数字应该很好地分布在0到MAX之间。如果直接使用范围,则必须处理上限和下限。
当然,只要值的最大数量(显着)高于列表中的数字数量(在这种情况下仅为3),就可以轻松地将此方法扩展为在范围内工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句