梅森捻线机的时间复杂度是多少?

时间:2014-09-03 18:46:16

标签: algorithm time-complexity prng mersenne-twister

我读过“梅森捻线机的计算复杂度为O(p 2 ),其中p是多项式的次数”。

  • 这是什么意思?
  • 这指的是哪个多项式?
  • 此外,计算复杂性是说时间复杂度的另一种方式,还是这与算法运行所需的空间量有关?

2 个答案:

答案 0 :(得分:4)

生成2 n 随机数需要生成 n 随机数的两倍,因此Mersenne Twister的时间复杂度为O(1),这意味着需要生成单个随机数的恒定时间;请注意,这可能是分摊的复杂性,因为Mersenne Twister通常会计算一批随机数,然后一次一个地将它们分开,直到批次被消耗,此时它会计算更多。您引用的Google搜索说的是同样的事情,尽管它试图更精确地确定常量。计算复杂性通常指时间复杂度,但在某些情况下,它也可能指空间复杂性。

答案 1 :(得分:2)

如果你在他们的原始论文中查看generate函数的C源代码,你会发现MT一次使用两个循环生成N个单词,这些循环总计为N-1次迭代,并且每个循环内的计算是固定数量的算术或按位运算。在循环之后,执行固定数量的附加算术/按位运算。因此,generate花费O(N)时间来生成N个单词,每个单词生成的O(1)时间为摊销。