如何使随机数发生器不重复数字?我试过这个,但它总是重复给我数字
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;
这里有很多关于SO的例子
用Java生成唯一随机数
Java中12位唯一随机数的生成
如何获得唯一的随机数?
也检查一下这个
http://programminggeeks.com/java-code-for-generating-unique-random-numbers/
http://java.about.com/od/javautil/a/randomnumbers.htm
这是简单的快速解决方案。当然可能更好:
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;
}
}
这取决于它在重复之前应该生成多少次,因为如果你完全不允许所有的重复,你最终必须用完。
如果你只需要几十个,那么创建一个序列号数组,并将它们洗牌。
如果你需要一个更长的序列,你需要在它们生成时记录它们,每当你看到一个重复的序列,就请求另一个。哈希集在这里就可以了。
问题内容: 有人可以帮助我制定一种无需重复在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,而无需重复 谢谢 问题答案: 我建议将数字加到,然后使用来随机化其顺序。像这样: