2011-02-28 113 views
0

真或假的(证明你的答案):随机数生成公式?

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子ⅰ)

+0

如果公式为**(A * X_ {i})Mod M ** //请注意圆括号 – 2011-02-28 13:00:46

+0

这是与语言相关的。例如,语言无法定义其模数运算符返回[3M,4M-1]范围内的整数没有任何理由。当然,这样的语言的设计者可能会被愤怒的程序员杀死。 – 2011-03-02 01:47:52

+0

@belisarius:圆括号不包括端点吗?括号 - [] - 是包容性的,并且parens是独家的。所以对于整数(a,b)等价于[a + 1,b-1]。 – 2011-03-02 01:49:43

回答

1
X_{i+1} = A ∗ X_i mod M 

这意味着,第(i + 1)序列X的第值等于A的乘以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 
+0

谢谢!我想我现在明白了。 – 2011-02-28 13:18:48

1

相信X_ {0}是第一个X序列的和,它的已经-M和M

模数之间是的剩余欧几里德分裂。 (请参阅Wikipedia) 对于此操作,其余部分的符号没有明确定义。

让我们假设d的欧几里德除以q得到n仍然r

在计算机科学中,这些数字sastistfy:Z轴

  • d = n * q + r
  • abs(r) < abs(n)
  • 这个定义导致具有这两个星座的商和余数的可能性

    1. Q值。 理论上,总是选择积极的余数,但取决于计算机科学中的算法,它也可能是消极的。

      然而,它始终:-M < r < M 我们可以说:0 <= abs(r) < M

      因此,假设我所做的假设,答案显然是true