从更大的阵列生成随机数数组?

时间:2012-03-21 08:27:34

标签: java random

我需要从一个更大的int数组中生成一个随机数组,而不需要重复和一系列数字。

例如 我有一个数组a [] 1-200 int,我需要的是所有200 int但是大小为15的随机数数组。我怎么能实现这个?

2 个答案:

答案 0 :(得分:3)

Fisher-Yates shuffle。特别是,只调整前15个元素并选择它们。

答案 1 :(得分:2)

Random rnd = new Random();

int[] a = new int[200];
for (int i = 0; i < a.length; i++)
    a[i] = i;

int[] r = new int[15];
for (int i = 0; i < r.length; i++) {
    int j = rnd.nextInt(a.length - i);
    r[i] = a[j];
    a[j] = a[a.length - i - 1];
}

应该这样做。随机抓取一些东西。一旦你抓住了它,用a的“last”值替换它。 “最后”值很容易从a.length和i。

中导出