gpt4 book ai didi

java - 随机数出现检查

转载 作者:行者123 更新时间:2023-11-29 02:35:54 24 4
gpt4 key购买 nike

我有一个字符串数组,当用户点击我的应用程序中的按钮时,我会生成一个随机数并使用它从我的 facts[] 数组中选择一个随机字符串。但是,我尝试改进我的代码,以便“永远不会”出现相同的随机数(导致向用户显示相同的字符串)。尽管我做出了努力,但我的“检查” block 似乎不起作用,因为当我第一次单击该按钮时它会生成一个随机事实,然后它什么都不做。请帮我弄清楚这背后的正确逻辑,也许可以编写一个更高效的代码块。

我目前的逻辑:检查已经生成的随机数是否已经存在于我的 int[] factCheck 数组中,如果它确实创建了另一个。如果它没有将它添加到数组中以便程序知道它有已经创建过一次。

int[] factsCheck = new int[facts.length];
boolean isNotNewRandomNumber = true;
int count = 0;
int randomNumberToReturn;

private void initFactsCheck() {
for(int i=0; i<=factsCheck.length;i++) {
factsCheck[i] = -1;
}
}

String getFact() {
// Randomly select a fact
Random randomGenerator = new Random();
while(isNotNewRandomNumber) {
randomNumberToReturn = randomGenerator.nextInt(facts.length);
for(int i = 0; i<factsCheck.length; i++) {
if(factsCheck[i] == randomNumberToReturn) {
break;
} else {
count++;
}
}
if (count == factsCheck.length) {
// Doesn't exist
isNotNewRandomNumber = false;
}
count = 0;
}
return facts[randomNumberToReturn];
}

最佳答案

在 getFacts() 的开头,添加:

isNotNewRandomNumber = true;

问题是你第一次调用 getFacts() 时将 isNotNewRandomNumber 设置为 false,然后你再也不会将它设置为 true,所以你永远不会再次进入 while 循环。

我不确定这就是您需要做的全部。也可能有其他错误。 while循环里面好像没必要有for循环。一定会有更好的办法。您可能希望在 return 语句之前将 factCheck[x] 设置为某个适当的值。

关于java - 随机数出现检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47095143/

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