gpt4 book ai didi

java - 从 Java RNG 的范围中删除一个数字?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:13 25 4
gpt4 key购买 nike

我目前正在使用 Java 的 RNG Random r = new Random(),并让它在 while 循环中生成一个介于 0 和 5 之间的新整数。

while (someBoolean == false) {
int i = r.nextInt(6);
....
}

我想做的是从范围中删除一个数字(例如 4),以便 RNG 仍然生成一个介于 0 和 5 之间的新数字,不包括其中一个值。

我目前最好的选择如下:

 while (someBoolean == false) {
int i = r.nextInt(6);
if (i == removedInt) { continue; }
....
}

但是我担心这会导致我的代码长时间运行,因为 RNG 会不断返回我不想要的数字。

[为清楚起见;返回的数字是 Connect4 网格中的一列,或 2D int 数组。该方法是在列中随机放置移动,直到列填满,此时我不再希望能够在该列中进行游戏。 ]

感谢任何帮助:)

最佳答案

ArrayList<Integer> myInts = new ArrayList<Integer>();
myInts.add(1);
myInts.add(2);
myInts.add(3);
myInts.add(4);
int i = myInts.get(r.nextInt(myInts.size())); // 1,2,3,4
myInts.remove(3);
int j = myInts.get(r.nextInt(myInts.size())); // 1,2,4

代码从允许的整数列表中选择随机条目。

PS 请注意,如果您的数字范围很大,那么创建一个包含成千上万个整数的 ArrayList 可能不是最好的主意。

关于java - 从 Java RNG 的范围中删除一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28481984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com