繁体   English   中英

如何防止随机数生成器重复数字?

[英]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将:

  1. 数复制到一个ArrayList<String>
  2. 使用Collections.shuffle以随机这份名单
  3. 遍历列表的值

这是我的解决方案..我使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM