如何将100个随机元素添加到具有重复项的空数组中?

时间:2016-09-25 18:23:19

标签: java arrays random elements

在这段代码中,我将100个随机元素混洗,而不是添加100个带有重复项的随机元素,并返回10个唯一键。我怎样才能做到这一点?

public static void main(String[] args) {

    ArrayList<Integer> uniqueKeys = new ArrayList<Integer>();
    for (int i = 0; i < 101; i++) {
        uniqueKeys.add(new Integer(i));
    }
    Collections.shuffle(uniqueKeys);
    for (int i = 0; i < 10; i++) {
        System.out.println(uniqueKeys.get(i));
    }
}

1 个答案:

答案 0 :(得分:1)

我建议使用Set和Random的组合。使用Set,你将摆脱重复。使用Random,您将获得(伪)随机数。

final int KEYS_COUNT = 100;
final int MAX_KEY_VALUE = 1000;

Set<Integer> setOfKeys = new HashSet<>();
Random random = new Random();

while (setOfKeys.size() <= KEYS_COUNT) {
    setOfKeys.add(random.nextInt(MAX_KEY_VALUE));
}

Set setOfKeys将包含100个唯一的随机数,其值小于1000.然后,您可以使用toArray()方法从Set中生成数组。

如果您将KEYS_COUNT设为MAX_KEY_VALUE,则值不会随机变化,只会进行随机播放。