我需要从一个更大的int数组中生成一个随机数组,而不需要重复和一系列数字。
例如 我有一个数组a [] 1-200 int,我需要的是所有200 int但是大小为15的随机数数组。我怎么能实现这个?
答案 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。
中导出