编写这个简单的Python非序列号生成器的更有效方法是什么?

时间:2011-06-07 15:54:21

标签: python algorithm

是否有一种更有效的方法来编写它,因此它不会从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)

1 个答案:

答案 0 :(得分:7)

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

(您确定要n - 1吗?这就是您当前代码的作用。)