[英]How can I prevent a random number generator from repeating numbers?
如何防止随机数生成器重复数字?
这是我的代码中生成随机数的部分:
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”。 我希望它总是一个不同的数字。
我会这样
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++);
}
对于这样一个小组数字(一个可以很容易地适应于存储器),I将:
ArrayList<String>
, Collections.shuffle
以随机这份名单 这是我的解决方案..我使用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);
}
}
}
一个简单的方法可以是:
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
公共静态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));
}
嗯,我不是100%地进入您的代码,但似乎您要打印出一个数字的长度,而不是数字。为什么? 您是否要防止连续获取两个4位数字? 好的,我明白了... nvm。
编辑:确定,这样就可以使该数组在每次循环运行时都删除“ select”变量(如果没有循环,则进行循环)。 然后,可能无法选择该号码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.