【问题标题】:How do I make an iteration of random numbers in Python 3?如何在 Python 3 中对随机数进行迭代?
【发布时间】:2019-05-16 16:11:50
【问题描述】:

我用这个做了一个随机数:

import random

number = random.randrange(0,100,2)

我想在里面迭代:

for i in number:
    print(i)

或类似:

for number in range (50,100):
    print number

我想制作一个随机数列表,例如 0 到 100 之间的 50 个随机数。

【问题讨论】:

  • random.sample(range(0,100,2),50) ?需要排序吗?
  • @Jean-FrançoisFabre 可能需要考虑他们是否需要替换 :)
  • @JonClements 是的,那部分还不清楚。添加替代方案:)

标签: python python-3.x random numbers


【解决方案1】:

生成一个包含 0 到 100(不包括)之间 50 个不同随机数的排序列表,如下所示:

sorted(random.sample(range(0,100),50))

(在range对象中挑选50个元素并对其进行排序)

如果您需要/想要重复,请不要使用sample,只需选择 50 个数字

sorted([random.randrange(0,100) for _ in range(50)])

或来自 python 3.6:sorted(random.choices(range(100),k=50))

【讨论】:

  • 没什么大不了的,但是你可以省略括号,把你的理解变成一个更高效的生成器。 sorted(random.randrange(0,100) for _ in range(50))
  • 对此不确定:sorted 无论如何都需要获取完整列表。括号是故意放在这里的。
  • random.choices(range(100),k=50) ?
【解决方案2】:

要生成包含 n 个随机数的列表,您可以使用列表推导。比如,

lst = [random.randint(0,100) for _ in range(n)]

【讨论】:

    【解决方案3】:

    如果你想列出 50 个介于 1 和 100 之间的随机数,你可以这样做:

    import random
    
    randlist = []
    
    for i in range(50):
        randlist += [random.randint(1, 100)]
    

    【讨论】:

    • 浪费。 randlist = random.choices(range(1,101), k=50) 是要使用多个重绘的方法... random.sample 对于不重绘。
    • 另外,append 可以将元素添加到列表中。无需创建一个列表元素即可就地添加
    猜你喜欢
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 2019-09-20
    • 2012-10-27
    相关资源
    最近更新 更多