在 Y 和 Z 之间生成 X 个随机整数? [复制]
Posted
技术标签:
【中文标题】在 Y 和 Z 之间生成 X 个随机整数? [复制]【英文标题】:Generate X random integers between Y and Z? [duplicate] 【发布时间】:2017-02-22 23:45:06 【问题描述】:Python 中是否有一个函数(我正在使用 SageMath)来获取 0 到 30 之间的 10 个随机整数,例如,不重复它们?
【问题讨论】:
在这里查找:***.com/questions/3996904/… @dima:郑重声明,这不是Generate random integers between 0 and 9 的重复,因为生成多个唯一值是一个有意义的不同问题。也就是说,Generate a set of sorted random numbers from a specific range 是相同的,除了它还希望对值进行排序(并且可以轻松省略该步骤)。 【参考方案1】:import random
random.sample(range(31), 10)
【讨论】:
def gen_between(start, end, count): return random.sample(range(start, end+1), count)
将有助于更自定义地调用它。
random.sample(range(30+1), 10),实际上。
@AdamSmith 似乎不值得。一方面,它迫使我们关心start
和count
,我们可能很多时候都不会关心
@zvone 仅在您使用 python 2 时,在这种情况下您应该使用 xrange 作为 ShadowRanger 并且文档说
@zvone:很多人认为xrange
返回一个生成器对象,而实际上它返回一个主要实现序列协议的对象(因此是可迭代的),对于random.sample
,重要的是您可以在其上调用len
并按整数索引对其进行索引。 Py3 的 range
只是 Py2 的 xrange
的改进版本,支持完整的序列协议(允许切片、O(1)
成员资格测试等)。【参考方案2】:
>>> n=[]
>>> while len(n)<=10:
x=randint(0,30)
if x not in n:
n.append(x)
每次运行此代码时不要忘记清除列表
【讨论】:
这可能会生成一个只有一个数字的列表。 嗯我忘了 或者您可以将其设为返回列表的函数,因此无需清理列表... 是的,你是对的 ?以上是关于在 Y 和 Z 之间生成 X 个随机整数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章