java从更大的数组生成随机数数组? 4 月 Questions & Answers 175 我需要从一个更大的int数组中生成一个随机数组,不需要重复,并且在一个数字范围内 例如 我有一个数组a[]和1-200 int,我需要的是所有200 int的随机数数组,但大小为15。我如何实现这一点
# 1 楼答案 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抓取某物。一旦你抓取了它,用a的“最后”值替换它。“最后”值很容易从a.length和i中派生出来
# 1 楼答案
应该这样做。随机从a抓取某物。一旦你抓取了它,用a的“最后”值替换它。“最后”值很容易从a.length和i中派生出来
# 2 楼答案
Fisher-Yates shuffle。特别是,将前15个元素洗牌并选择它们