不在循环中多次生成相同的随机数

洛根

我是 Java 新手,所以如果有任何不清楚(或者代码真的很糟糕),请提前道歉,但我正在尝试构建一个程序,让计算机猜测用户输入的两位数代码(即secretCode)。以下代码工作正常,它将生成一个随机代码,然后与密码进行比较,并检查是否在正确的位置输入了位置。

但是,我将如何做到这一点,以便每次计算机猜测时,它都无法猜测它先前猜测过的数字(例如,如果它在第一次猜测时猜测了 57,则在持续时间内它无法再次选择 57)循环)。基本上我希望计算机跟踪它所做的猜测,而不是再做一次。任何想法这是如何可能的(如果可能,无需大量重写程序)?还是我在这件事上走错了路?

while (guesses < 10)
      int[] compCode = computer.getComputerCode(); //This line gets a random two digit array of ints
      System.out.print("Computer guess: ");
      Arrays.stream(compCode).forEach(System.out::print);
      correctPositions = getPosition(compCode, secretCode);

      System.out.println("\nYou picked " + correctPositions + " numbers in the correct position.");
      guesses++;
}
格洛杰特

一种方法是ArrayList用数字填充 an ,然后将 shuffle ArrayList

ArrayList<Integer> guesses = new ArrayList<>();
for(int i =0; i < 100; i++) {
  guesses.add(i);
}
//guesses now contains numbers 0-99
Collections.shuffle(guesses);

然后每当你需要一个随机数时,你可以简单地调用一个索引guesses(确保你跟踪你所在的索引)

一个例子可能是这样的:

while(some_condition) {
   //start count at -1, so when we add one it will be 0
   //which is the first index of the ArrayList
   int count = -1;
   //Some code
   guesses.get(count++);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在循环中生成相同的随机数序列

for循环中的相同随机数

如何防止在随机数生成器中多次生成整数

随机数生成器总是在for循环中生成相同的数字吗?

for循环中的随机数生成器每次都给出相同的数字

在fork循环中生成随机数

Java在for循环中生成随机数

C++ 每次生成随机数

在 loop_C++ 中生成随机数并在循环中生成数组(openmp)

MATLAB:生成相同的随机数序列

如何在while循环中生成非重复随机数?(Python 3)

Matlab:在每个parfor循环中生成不同的随机数

每次在python循环中生成一个随机数

如何在Python中的每次循环中生成唯一的单个随机数?

如何在C的循环中生成不同的随机数?

为什么我生成的随机数不会在循环中改变?C

如何在while循环中只生成一次随机数?

C ++在循环内生成随机数

在PostgreSQL中多次生成相同的数据

生成具有均匀分布的随机数(循环获得相同的数)

在java中的特定时间间隔内每次生成一个随机数

每次生成随机数,不包含最后一个数字

如果不等于x,则再次生成随机数

Scala随机数生成器不在范围之间产生唯一的随机数

并行计算(MATLAB)中的随机数生成器,每个并行循环中是否有不同的初始随机数?

无法在循环中绘制随机数[Java]

需要对循环中的随机数中的数字求和

使用if语句的do-while循环中的随机数

如何修正while循环中的随机数?