如何防止随机数生成器重复数字?
以下是我的代码中生成随机数的部分:
String [] number = {"1","2","3","4","5","6"};
Random random = new Random();
int Select = random.nextInt(number.length);
System.out.println(number[Select]);
有时它重复数字,如“4”,然后再重复“4”。我希望它总是一个不同的数字。
答案 0 :(得分:3)
我会这样做
class Generator {
List<String> number = Arrays.asList("1", "2", "3", "4", "5", "6");
int n = 0;
Generator() {
Collections.shuffle(number);
}
String next() {
return number.get(n++);
}
答案 1 :(得分:2)
对于这么小的一组数字(一个很容易适合记忆的数字),我会:
ArrayList<String>
,Collections.shuffle
随机化此列表答案 2 :(得分:1)
这是我的解决方案.. 我使用ArrayList而不是常规数组,因为它是字符串..
import java.util.*;
class RandomWithoutRepeat {
public static void main(String[] args) {
ArrayList<String> number = new ArrayList<String>(
Arrays.asList("1","2","3","4","5","6"));
Random random = new Random();
int size = number.size();
int Select = random.nextInt(number.size());
for(int i =0; i< size; i++)
{
Select = random.nextInt(number.size());
System.out.println(number.get(Select));
number.remove(Select);
}
}
}
答案 3 :(得分:0)
一种简单的方法可以是:
store what values have already been generated in an array x
while new value is in the var x
generate a new value again
use new value in the way you want
答案 4 :(得分:0)
public static void main(String [] args){
Integer[] arr = new Integer[1000];
for (int i = 0; i < arr.length; i++) {
arr[i] = i;
}
Collections.shuffle(Arrays.asList(arr));
System.out.println(Arrays.toString(arr));
}
答案 5 :(得分:-1)
嗯,我不是100%的代码,但似乎你打印出一个数字的长度,而不是数字...为什么?你想阻止连续获得两个4位数字吗?好的,我明白了... nvm。
编辑:好的,所以这样做,以便每次运行循环时数组都会删除'select'变量(如果没有循环,则进行循环)。然后,这个数字不可能被选中。