当前位置: 首页 > 知识库问答 >
问题:

无重复结果的随机数生成器[重复]

易琛
2023-03-14

如何使随机数发生器不重复数字?我试过这个,但它总是重复给我数字

public int random(int a, int b,int c,int d,int e,int f,int g,int h,int i,int j,int k,int l){
 Random generator = new Random();
 int choice = generator.nextInt(12) + 1;
 if((choice!=b)|(choice!=c)|(choice!=d)|(choice!=e)|(choice!=f)|(choice!=g)|(choice!=h)|(choice!=i)|(choice!=j)|(choice!=k)|(choice!=l)){
     a=choice;
 }
 else{
     random(a,b,c,d,e,f,g,h,i,j,k,l);


 }
 System.out.println(choice);
return a;

共有3个答案

陶唯
2023-03-14

这里有很多关于SO的例子

用Java生成唯一随机数

Java中12位唯一随机数的生成

如何获得唯一的随机数?

也检查一下这个

http://programminggeeks.com/java-code-for-generating-unique-random-numbers/

http://java.about.com/od/javautil/a/randomnumbers.htm

濮阳安澜
2023-03-14

这是简单的快速解决方案。当然可能更好:

import java.util.*;

public class RandomNumberGenerator {

    private ArrayList<Integer> usedNumbers;
    private Random r;
    private int maxNumber;

    public RandomNumberGenerator(int maxNumber) {
        r = new Random();
        usedNumbers = new ArrayList<Integer>();
        this.maxNumber = maxNumber;
    }

    public int next() {
        Integer res = r.nextInt(maxNumber);
        if (usedNumbers.contains(res)) {
            next();
        }
        usedNumbers.add(res);
        if (usedNumbers.size()==maxNumber) {
            usedNumbers.clear();
        }
        return res;
    }

}
桑璞
2023-03-14

这取决于它在重复之前应该生成多少次,因为如果你完全不允许所有的重复,你最终必须用完。

如果你只需要几十个,那么创建一个序列号数组,并将它们洗牌。

如果你需要一个更长的序列,你需要在它们生成时记录它们,每当你看到一个重复的序列,就请求另一个。哈希集在这里就可以了。

 类似资料:
  • 问题内容: 有人可以帮助我制定一种无需重复在Android中生成随机数的方法吗?最大数量是:这是我的JSON数组。并且返回值应为整数。 我已经拥有的是: 我将方法强制转换了3次,因为我需要3个随机生成的数字。它有效,但是我不知道如何避免重复。因此,这3个数字彼此之间不会相同。 谢谢 问题答案: 您是否尝试过仅使用Math.random()? 只要做一些铸造魔术,您就可以轻松开始了: 编辑: 如果要

  • 您好,如何在kotlin中生成0到10之间的随机整数?我尝试了<code>Random()。nextInt()和,但我无法生成一个。谢谢

  • 我正在开发我的第一个应用程序,我正在开发一个数独手机游戏。我已经开发了随机数生成器,我只是不知道如何编写它,所以它只生成1-9之间的数字(不是零),每个数字只生成一次。这是我目前所拥有的:

  • 问题内容: 我想创建一组随机数,在Java中没有重复项。 例如,我有一个数组来存储10,000个从0到9999的随机整数。 这是我到目前为止的内容: 但是上面的代码创建重复项。如何确保随机数不重复? 问题答案: 例如:

  • 如何在1到9之间生成9个随机数,而不重复,一个接一个。它类似于:假设生成的第一个随机数是4,那么下一个随机数必须在[1,9]{4}中。我的第一种方法是将每个随机生成的数字添加到一个集合中,从而避免重复。但在更糟糕的情况下,比如我们已经生成了6个数字,我们必须再生成3个数字,这个过程会有点慢。当范围从[1,9]更改为[1,1000]时,这种方法听起来不正确。有人能提出一个替代方法吗。

  • 问题内容: 谁能告诉我如何生成不重复的随机数 随机(10)应该(可能)返回3、4、2、1、7、6、5、8、9、10,而无需重复 谢谢 问题答案: 我建议将数字加到,然后使用来随机化其顺序。像这样: