【问题标题】:What is the time complexity of the Mersenne twister?梅森捻线器的时间复杂度是多少?
【发布时间】:2014-10-28 09:07:01
【问题描述】:

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

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

【问题讨论】:

    标签: algorithm time-complexity prng mersenne-twister


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-08-16
        • 1970-01-01
        • 2011-03-10
        • 2013-07-12
        • 2013-04-11
        • 2018-11-24
        • 2014-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多