Есть ли более эффективный способ написать это, чтобы он не зацикливался от 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)