【问题标题】:How do I generate a specific amount of random numbers?如何生成特定数量的随机数?
【发布时间】:2019-11-11 21:55:39
【问题描述】:

我必须向用户询问一个数字,然后生成与用户使用 while 循环指定的一样多的随机数。

import random

x = int(input("Write a number: "))
y = random.randint(0, 10)

while x != 0:
    print(y)
    y = random.randint(0, 10)

【问题讨论】:

  • 检查输入是否为数字要比盲目使用int(input(...)) 好得多,如果输入不代表数字(例如,如果用户输入单词“废话”或字符串“xyz”。)见this question

标签: python loops random while-loop numbers


【解决方案1】:

对您的代码稍作修改。 你没有减少x

import random

x = int(input("Write a number: "))

while x != 0:
    y = random.randint(0, 10)
    print(y)
    x-=1

【讨论】:

    【解决方案2】:

    您的while 循环将永远旋转,因为您永远不会减少x。您可以通过将其添加到循环主体来解决此问题:

    x -= 1
    

    如果您不希望它在用户输入负数时永远旋转(因为它会永远减少而不会达到 0),您可以将您的 while 更改为:

    while x > 0:
    

    执行这种循环的更简单/标准/惯用的方法是使用for ... in range

    for _ in range(x):
        print(random.randint(0, 10))
    

    【讨论】:

    • 最后一个建议是最好的方法。请注意,尽管使用 _ 作为虚拟变量可能会破坏其在交互式 shell 中的使用。
    【解决方案3】:

    您可以使用random.choices 从范围中选择 10 个值。

    x = int(input("Write a number: "))
    values = list(random.choices(range(11), k=x))
    

    对于更大的范围,您可能宁愿重复调用random.randint

    values = [random.randint(0,10) for _ in range(x)]
    

    【讨论】:

      【解决方案4】:

      我想指出,for 循环比 while 循环更可取,但 Sam Stafford 击败了我!列表理解解决方案也不错。

      我知道你的代码只是一个例子,但是那些变量名真的很糟糕,小心点。不管怎样,这里有一个numpy 的解决方案,它总有一天会派上用场的!

      import numpy as np
      
      num_to_gen = int(input("Choose how many random numbers to generate: "))
      
      rand_nums = np.random.randint(low=0, high=11, size=num_to_gen).tolist()
      
      print(rand_nums)
      

      【讨论】:

        猜你喜欢
        • 2021-05-31
        • 1970-01-01
        • 2013-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-04
        相关资源
        最近更新 更多