我读过“梅森捻线机的计算复杂度为O(p 2 ),其中p是多项式的次数”。
答案 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)时间为摊销。