生成count个[0-n)不重复的随机数
Posted huigelaile
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成count个[0-n)不重复的随机数相关的知识,希望对你有一定的参考价值。
代码来自:https://www.cnblogs.com/ningvsban/p/3590722.html,感觉实现的方式不错(做了一点小小修改)
public static ArrayList getDiffNo(int count, int n) // 生成count个[0-n) 不重复的随机数,左开右闭 // list 用来保存这些随机数 ArrayList list = new ArrayList(); Random rand = new Random(); boolean[] bool = new boolean[n]; int num = 0; for (int i = 0; i < count; i++) do // 如果产生的数相同继续循环 num = rand.nextInt(n); while (bool[num]); bool[num] = true; list.add(num); return list;
测试:
for (int i = 0; i < 10; i++) System.out.println(getDiffNo(5, 20));;
结果:
[4, 0, 8, 9, 13] [6, 13, 8, 10, 14] [16, 6, 17, 12, 19] [3, 10, 13, 4, 14] [10, 0, 1, 5, 19] [1, 14, 5, 11, 6] [1, 3, 5, 9, 18] [0, 5, 10, 4, 7] [4, 5, 19, 10, 16] [6, 13, 11, 3, 18]
以上是关于生成count个[0-n)不重复的随机数的主要内容,如果未能解决你的问题,请参考以下文章