【算法】有序打乱解决办法
【算法】有序打乱
传入:
int seed,种子
int max,最大值
int value,要打乱的值 0 < value <= max
使得传入的value变成另一个数,0 < value <= max
并且传入1至max的value出来的数字不重复
大家有没有研究过这类算法?
------解决思路----------------------
伪随机数发生器 (A * b + c) % m,令周期(m)为 max + 1
则在 0 - max 范围里不会有重复
------解决思路----------------------
a必须和m互质,就是最大公约数是1
c无所谓,只不过c = 0时value不能为0
比如a = 3, c = 1, m = 4
0->1
1->0
2->3
3->2
传入:
int seed,种子
int max,最大值
int value,要打乱的值 0 < value <= max
使得传入的value变成另一个数,0 < value <= max
并且传入1至max的value出来的数字不重复
大家有没有研究过这类算法?
------解决思路----------------------
伪随机数发生器 (A * b + c) % m,令周期(m)为 max + 1
则在 0 - max 范围里不会有重复
------解决思路----------------------
a必须和m互质,就是最大公约数是1
c无所谓,只不过c = 0时value不能为0
比如a = 3, c = 1, m = 4
0->1
1->0
2->3
3->2