gpt4 book ai didi

java - 尝试用数组获取不重复的随机数

转载 作者:行者123 更新时间:2023-12-01 19:43:25 25 4
gpt4 key购买 nike

我通过包含一个数组重新尝试了之前的问题。程序没有错误,但数字仍然重复。这是我的代码:

public static String ball() {
String var = null;
int ranVar[] = new int[75];
final Random ran = new Random();
int temp;

for (int i = 0; i < ranVar.length; i++) {
do {
temp = ran.nextInt(74) + 1;
} while (match(temp, ranVar));
ranVar[i] = temp;
if (ranVar[i] <= 15) {
return var = "B" + ranVar[i];
} else if (ranVar[i] <= 30) {
return var = "I" + ranVar[i];
} else if (ranVar[i] <= 45) {
return var = "N" + ranVar[i];
} else if (ranVar[i] <= 60) {
return var = "G" + ranVar[i];
} else if (ranVar[i] <= 75) {
return var = "O" + ranVar[i];
}

}

return null;
}

private static boolean match(int temp, int var[]) {
for (int i = 0; i < var.length; i++) {
if (temp == var[i]) {
return true;
}
}
return false;
}

感谢您的帮助。

最佳答案

内嵌评论


// Seed your random number generator
final static Random ran = new Random(System.currentTimeMillis());

// create a set to store previously generated random numbers
static Set<Integer> usedIntegers = new HashSet<>();

// generate numbers until a number is found which is not been selected
public static int nextAvailableRandomInteger(){
int temp;
do{
temp = ran.nextInt(74) + 1;
} while (usedIntegers.contains(temp));
usedIntegers.add(temp);
return temp;
}


// I have no idea what this method does. So I changed the random number generator part.
public static String ball() {
String var = null;
int ranVar[] = new int[75];

int temp;

for (int i = 0; i < ranVar.length; i++) {
do {
temp = nextAvailableRandomInteger();
} while (match(temp, ranVar));
ranVar[i] = temp;
if (ranVar[i] <= 15) {
return var = "B" + ranVar[i];
} else if (ranVar[i] <= 30) {
return var = "I" + ranVar[i];
} else if (ranVar[i] <= 45) {
return var = "N" + ranVar[i];
} else if (ranVar[i] <= 60) {
return var = "G" + ranVar[i];
} else if (ranVar[i] <= 75) {
return var = "O" + ranVar[i];
}

}

return null;
}

private static boolean match(int temp, int var[]) {
for (int i = 0; i < var.length; i++) {
if (temp == var[i]) {
return true;
}
}
return false;
}

// I have no idea what this method does. So I changed the random number generator part.
public static String ball() {
String var = null;
int ranVar[] = new int[75];

int temp;

for (int i = 0; i < ranVar.length; i++) {
do {
temp = nextAvailableRandomInteger();
} while (match(temp, ranVar));
ranVar[i] = temp;
if (ranVar[i] <= 15) {
return var = "B" + ranVar[i];
} else if (ranVar[i] <= 30) {
return var = "I" + ranVar[i];
} else if (ranVar[i] <= 45) {
return var = "N" + ranVar[i];
} else if (ranVar[i] <= 60) {
return var = "G" + ranVar[i];
} else if (ranVar[i] <= 75) {
return var = "O" + ranVar[i];
}

}

return null;
}

private static boolean match(int temp, int var[]) {
for (int i = 0; i < var.length; i++) {
if (temp == var[i]) {
return true;
}
}
return false;
}

PS:这不是最好的方法。最终该集合将填满 75 个数字,并且如果无法退出循环,程序将无限期地运行。改进此问题的一种方法是生成一个数字列表,然后从该列表中进行选择,删除使用过的数字,这样当您到达空列表时,游戏就会停止。

关于java - 尝试用数组获取不重复的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59149530/

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