我不确定如何把这个和我的数学技能不那么强。但这就是我需要的。
我想生成所有16位整数的列表(0-65535)。但是每当我这样做时,我想随机地对算法进行种子处理,每次列表以不同的整数开始,所有后续整数将生成一次,但也是随机顺序。
小例子(1-5):......
1,5,3,2,4
4,3,1,5,2
2,1,4,5,3 ......
任何帮助?
答案 0 :(得分:4)
最简单的方法可能是生成所需数字列表and then shuffle it。
答案 1 :(得分:3)
假设您没有安全要求,可能最简单的方法是创建Linear Congruential Generator (LCG)并在每次需要更改序列时选择新的乘数和/或增量。使用维基百科条目中的符号,如果您想要所有k位整数,则模数为m = 2 k 且条件1,2和3简化为:
1. c是奇数
2.对于任何整数x
还有其他类似于LCG的发电机应该同样令人满意。
答案 2 :(得分:1)
您没有说出您使用的语言,但这里有两种语言:
$arr = range(1, 5);
shuffle($arr);
List<Integer> list = new ArrayList<Integer>();
for (int i=1; i<=5; i++) {
list.add(i);
}
Collections.shuffle(list);