【问题标题】:how work around remainder functions?如何解决剩余函数?
【发布时间】:2023-04-02 21:53:01
【问题描述】:

我正在查看一个公式:

Xn+1 = (a Xn + c)(mod m)

其中“n”是值的个数,可以从 1 到 1700。“X”是 号码。 (n+1 和 n 都是下标)

我正在尝试查找伪随机数列表的未来可能结果(每个数字最多有 6 位数字,值可以从 000001 到 999999)。

我知道 Xn+1 和 Xn 的值;对于“m”,我使用值“1000000”或“999999”,因此结果始终为 6 位或更少。

我需要找出“a”的值。

供参考: Xn=663354 和 Xn+1=142516 OR 211941 OR 453794 OR 512535 OR 704928(不知道这些数字的顺序,但可以试一试 一个人,如果我能知道如何在 上式)

如果有人可以提出其他建议,我需要解决这个等式或任何其他问题。

我不擅长编程;我目前使用MS Excel 来解决这个问题。 不过能看懂VB里的一点代码。

谢谢你的期待。

【问题讨论】:

    标签: algorithm random vbscript


    【解决方案1】:

    好吧,如果我理解得很好,您想确定循环关系中的参数 a 和 c。但是你只有一个方程的解。您的系统未确定,您需要 3 个值 Xn+2、Xn+1 和 Xn。 (http://en.wikipedia.org/wiki/Underdetermined_system)

    如果你知道 c,那么这很明显:你需要解一个线性方程。

    【讨论】:

    • 非常感谢亲爱的先生您的回复。以下是我的解决方案的算法,但我无法将其编码到 VB 中。 int getRandomNumber() { 秘密 = (秘密 * 663354 + 654321) % 10000001;返回秘密 % 100000;我知道从 X1 到 X1700 的值;基本问题是获得“a”的值,因为“c”对我的解决方案没有太大影响。如果您能在这方面指导我,那对我真的很有帮助。您对求解线性方程的建议是不错的选择;但由于 mod()/remainder 函数,我也被卡住了。
    猜你喜欢
    • 1970-01-01
    • 2017-05-28
    • 2019-12-20
    • 2010-12-05
    • 2012-03-08
    • 1970-01-01
    • 2020-06-09
    • 2012-06-08
    • 2014-01-31
    相关资源
    最近更新 更多