我想在0-500范围内创建10个随机数.但问题是我希望这些数字是唯一的.对于2个随机数,我可以创建如下内容:
int randomItem1 = r.nextInt(500);
int randomItem2 = r.nextInt(500);
while(randomItem1==randomItem2){
randomItem1=randomItem();
randomItem2=randomItem();
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做10,我认为它会堆叠.而且我这样说是因为我正在尝试创建一个巨大的算法,它试图进行连续的评估,我想要不断地获取10个随机和唯一的数字.我不知道该怎么办.任何想法或建议?
Chr*_*row 18
看起来您将这些存储在单个变量中.存储此类项目组的"正常"位置通常位于列表或数组中.
在这种情况下,请将它们存储在"set"数据结构中.它不允许重复.
设置文档:http: //docs.oracle.com/javase/1.5.0/docs/api/java/util/Set.html
Set set = new HashSet();
while (set.size() < 10) {
set.add(r.nextInt(500));
}
Run Code Online (Sandbox Code Playgroud)
Java Collections有一个shuffle方法。您可以将数字放入ArrayList中,然后重新排列其内容。如果ArrayList包含n个数字,则调用shuffle方法,将为您提供包含n个数字但随机排列的相同ArrayList。
for(int i=0;i<10;i++){
list.add(i); // list contains: [0,1,2,3,4,5,6,7,8,9]
}
Collections.shuffle(list);// list now contains: [0, 9, 3, 1, 5, 8, 7, 2, 6, 4]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17571 次 |
最近记录: |