所以我有一段代码:
def test(num):
count = 1
l = []
while len(l) < 16:
x = num % count
if x >= 16 or x in l:
pass
else:
l.append(x)
count += 1
return l
以一个数45071
为例,用count
模化它,它从1开始,每个循环周期上升一。然后,如果45071 % count
小于16,则会将其追加到列表中,除非已经存在相同的值。当列表中有16个数字(从0到15)时,此循环停止。以下是测试运行的结果:
>>> print(test(45071))
[0, 1, 2, 3, 5, 7, 8, 4, 11, 15, 14, 13, 12, 6, 9, 10]
这一切都是可行的,但对于更大的列表和许多不同的数字,它变得相当缓慢。我想知道是否有任何方法可以让这更快,或者另一种方法可以得到一个从0到15的数字列表。“随机”数字越多越好。提前谢谢
正如许多人已经建议的那样,使用
random
。如果您使用相同的种子调用random.seed
,然后进行相同的伪随机函数调用,那么它就不是真正的随机(没有什么是随机的),您将始终得到相同的伪随机结果使用
shuffle
(或等效方法)比原始方法更有效,因为您不需要不断生成随机数并将其丢弃更简洁的版本可能是使用
random.sample
:如果您只是寻找随机数,那么您可以使用具有此功能的库。例如random.randrange()或numpy.random.rand()
相关问题 更多 >
编程相关推荐