有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中高效地生成随机非重复数列表

我需要在Java中尽可能高效地生成0到1000之间的非重复随机数列表。我现在只有两个想法,我想知道是否还有其他更好的想法,如果没有,我应该使用以下哪些想法

    • 生成一个介于0和1000之间的随机数r,并将其添加到另一个名为randomArray[r]的数组中,该数组位于索引r处
    • 生成另一个随机数,并检查randomArray[r]是否尚未存储先前生成的随机数
    • 继续走,直到我做完
    • 生成一个数组并用其索引填充其元素
    • 疯狂地洗牌(还有,我怎样才能有效地做到这一点?)
    • 使用数组中从头开始的元素值

谢谢


共 (1) 个答案

  1. # 1 楼答案

    java.util.Collections.shuffle方法以相同的可能性洗牌列表。创建一个列表并将值从0添加到1000。然后使用此方法洗牌列表

    List l = new ArrayList();
    for(int i = 0; i <= 1000; i++)
        l.add(i);
    
    Collections.shuffle(l); 
    

    现在,列表中包含了经过洗牌的值