【问题标题】:Generate X random integers between Y and Z? [duplicate]在 Y 和 Z 之间生成 X 个随机整数? [复制]
【发布时间】:2017-02-22 23:45:06
【问题描述】:

Python 中是否有一个函数(我正在使用 SageMath)来获取 0 到 30 之间的 10 个随机整数,例如,不重复它们?

【问题讨论】:

标签: python random sage


【解决方案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 似乎不值得。一方面,它迫使我们关心startcount,我们可能很多时候都不会关心
  • @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)

每次运行此代码时不要忘记清除列表

【讨论】:

  • 这可能会生成一个只有一个数字的列表。
  • 嗯我忘了
  • 或者您可以将其设为返回列表的函数,因此无需清理列表...
  • 是的,你是对的 ?
猜你喜欢
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 2012-01-07
  • 1970-01-01
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
相关资源
最近更新 更多