有没有一种更有效的方法来编写它,这样它就不会从1循环到n(挂在n==2**32上):

def ns_num(n, seed, modulo, incrementor):
    assert n < modulo

    current = seed # some start value
    for i in xrange(1, n):
        current = (current + incrementor) % modulo

    return current

print ns_num(5, 3250, 87178291199, 17180131327)
print ns_num(2**32, 3250, 87178291199, 17180131327)

最佳答案

这和

return (seed + (n - 1) * incrementor) % modulo

(您确定要n - 1这就是您当前的代码所做的。)

关于python - 编写此简单的Python非序数生成器的更有效方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6268045/

10-16 04:27