algorithm - 得到 x。 "Linear Congruential Generator"的值

标签 algorithm

我有一个“线性同余生成器”,它为我的 2.faze Auth 生成随 secret 钥。我基本上需要有一个种子,我将在客户端和服务器上生成一个 key ,这样我就不必发送它了。

问题是如果用户长时间不使用客户端,则在获取当前 key 之前必须生成大量 key 。公式是 s1 = (a * s0 + 2) mod m 我需要这个序列的第 n 个成员。

最佳答案

首先,用于身份验证的 LCG,真的吗?这对我来说是个坏主意......

但无论如何,回到问题:

s(i+1) = (a*s(i) + 2) mod m
s(i+2) = (a*(a*s(i) + 2) + 2) mod m = a^2*s(i) + 2*(a+1) mod m
s(i+4) = (a^2*(a^2*s(i) + a*2+2) + a*2+2) mod m = a^4*s(i) + 2*(a^3+a^2+a+1) mod m

并通过递归

s(i+2^n) = a^2^n * s(i) + 2*(a^2^n-1)/(a-1)

然后要快进n步,只需将n写成二进制,用上面的公式做成log_2(n)步骤。

关于algorithm - 得到 x。 "Linear Congruential Generator"的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58406874/

相关文章:

python - 编程新手,同样的结果不同的程序

java - 在数组中找到满足 a + b + c = 0 的三元组 (a, b ,c)

java - 将日期列表转换为日期范围字符串

algorithm - 500 个数字最快的简单排序算法(快速排序/合并排序除外)是什么?

php - 如何使用 PHP 找到图像的 "majority colors"?

algorithm - 分布式系统上的递归算法

algorithm - 识别规则网格中的扭曲

Python计算每个IP每小时的请求率

algorithm - 有人能解释一下为什么下面的 LIS 算法不是 O(n) 吗?

algorithm - Tinyurl 风格的唯一代码 : potential algorithm to prevent collisions