【发布时间】:2020-05-18 16:23:18
【问题描述】:
我想知道是否有一种简单有效的方法可以在 python 中生成随机数 这样每10个序列都是不同的数字。
我试过这个选项:
import random
random.randint(0,100)
但经过几代之后,我注意到生成的数字可以一个接一个地重复 所以我尝试使用一组这些数字,它有点解决了这个问题 但它留下了一些数字,如果我需要特定数量的随机生成的数字,我需要在之后重新生成这些数字,但过了一会儿我被建议使用另一种解决方案:
Randlist = random.sample(range(1,101), k=10)
效果很好,但需要一个整数列表来保存我的 10 个不同的数字
有没有办法在没有列表的情况下做到这一点,所以它不会像 O(n^2) 及以上那样太复杂?
【问题讨论】:
-
像您在最后所做的那样从集合中采样可能是最直接的方法。请注意,
range不是列表。它是一个包含几个数字的对象,并根据请求按索引计算其元素。 -
@Carcigenicate 即使我这样做: import random print(random.sample(range(1,101), k=10), end = ' ') 它仍然将它们打印为列表..
-
您会接受 [0,1,2,3,4,5,6,7,8,9, 9] 作为有效(如果不可能)输出吗?前 10 个不重复,但从第二个数字开始的 10 序列包含一个重复。
-
@Oli 如果我们谈论的是个位数而不是肯定的,但我确实想知道洗牌下一个序列需要什么。
-
要求列表有什么问题?这是 O(1) 内存和时间。
标签: python python-3.x random