我正在尝试使用随机选择的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个相同数字的元素。我相信问题在于我所放入的随机数即使我在循环中更改它也没有改变。有人知道怎么做吗?
由于
答案 0 :(得分:2)
只需更改
while number[counter] > 10:
到
while number[counter] >= 10:
最初,只有当您的数组中有超过10个实例时,您的代码才会停止追加某个数字。通过将其更改为> =,程序将在第10次添加数字时停止附加数字。
答案 1 :(得分:1)
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)