有没有一种更有效的方法来编写它,这样它就不会从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/