对或错(证明你的回答是正确的):
For all values of A, M, and X_i in the formula
X_{i+1} = A ∗ X_i mod M,
the value of X_{i+1} is always in the range (−M, M)
这是我今天进行的计算机科学考试的一个练习题,我不确定答案是什么?我记得我们谈过在randNumGeneration中使用这个公式......?如果有人能帮助我理解,那就太好了。谢谢!
(我认为X_ {i}被读取:X sub i)
答案 0 :(得分:1)
X_{i+1} = A ∗ X_i mod M
这意味着序列X的第(i + 1)个值等于A的值乘以X序列的第i个(前一个)值,然后送到模数运算符,它将结果放入[0,M]间隔。
所以答案是对的。
示例:
let A = 3, M = 5 and X0 = 4.
X1 = A * X0 mod 5 = 3 * 4 mod 5 = 2 mod 5
X2 = A * X1 mod 5 = 3 * 2 mod 5 = 1 mod 5
X3 = A * X2 mod 5 = 3 * 1 mod 5 = 3 mod 5
X4 = A * X3 mod 5 = 3 * 3 mod 5 = 4 mod 5
let A = -3, M = 5 and X0 = 1.
X1 = A * X0 mod 5 = -3 * 1 mod 5 = 2 mod 5
X2 = A * X1 mod 5 = -3 * 2 mod 5 = 4 mod 5
X3 = A * X2 mod 5 = -3 * 4 mod 5 = 3 mod 5
X4 = A * X3 mod 5 = -3 * 3 mod 5 = 1 mod 5
答案 1 :(得分:1)
我相信X_ {0}是X序列中的第一个,并且已经在-M和M之间。
模数是欧几里德分裂的剩余部分。 (见Wikipedia) 此操作没有明确定义余数的符号。
让我们说d
的{{1}}的欧几里德分区q
仍为n
。
在计算机科学中,这些数字是真实的:
r
d = n * q + r
这个定义导致两个符号的商和剩余部分的可能性。 从理论上讲,总是选择正余数,但根据计算机科学中的算法,它也可能是负数。
尽管如此,它总是:abs(r) < abs(n)
我们可以说:-M < r < M
因此,假设我做出假设,答案显然是0 <= abs(r) < M
。