好的,我不确定是否有一个一般性的答案,所以我将专注于具有例如64位内部状态/种子,产生64位输出并具有2 ^
64-1周期的随机数生成器。我特别要看一下线性同余生成器(又名LCG),其形式为
next = (a * prev + c) mod m
在哪里
a和
m彼此互质
所以:
1)检查
2)检查
3)检查(当然,要保留64位空间)
4)检查(同样,我相信除了0以外,但64位的每个排列都是从LCG的某些种子开始输出的)
5)检查。LCG是可逆的,即可以
prev = (next - c) * a_inv mod m
其中a_inv可以从计算
a,
m使用Euclid算法
好吧,如果您觉得还可以,则可以尝试在15546位空间中实现LCG
更新
快速搜索在此处显示可逆的LCG讨论/代码



