【问题标题】:Generate Integer Random Numbers in Python Array在 Python 数组中生成整数随机数
【发布时间】:2016-08-08 23:27:08
【问题描述】:

我正在尝试创建一个随机选择 0 到 2 之间的 30 个整数元素的数组。当某个数字被选择 10 次时,我不能再附加它了。最后,我需要一个包含 30 个元素的数组,其中包含 10 个数字 0、10 个数字 1 和 10 个数字 2。这就是我正在尝试的:

import random
array_size = 30
number = 3
counter = [0, 0, 0]
solution = []

for i in range(array_size):
    number = random.randrange(number) #generates numbers between 0 and 2

    while counter[number] > 10:
        number = random.randrange(number)

    counter[number] += 1
    solution.append(number)

结果,我有超过 10 个相同数量的元素。我相信问题出在我放在while中的随机数没有改变,即使我在循环内改变它。有人知道怎么做吗?

谢谢

【问题讨论】:

  • random.shuffle([0]*10 + [1]*10 + [2]*10)

标签: python arrays random


【解决方案1】:

改变一下

while number[counter] > 10:

while number[counter] >= 10:

最初,只有当您的数组中有超过 10 个实例时,您的代码才会停止附加某个数字。通过将其更改为 >=,程序将在第十次添加数字时停止添加数字。

【讨论】:

    【解决方案2】:
    import math
    import random
    
    number = 3
    size = 30
    
    steps = math.ceil(size / number)
    
    solution = []
    for x in range(steps):
        for n in range(number):
            solution.append(n)
    
    random.shuffle(solution)
    print(solution)
    

    【讨论】:

      猜你喜欢
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 2010-12-09
      • 2018-10-09
      • 2014-08-22
      • 2017-12-31
      相关资源
      最近更新 更多