2016-08-08 21 views
0

我正在嘗試使用隨機選擇的0和2之間的30個整型元素來創建一個數組。當某個數字被選擇10次時,我不能再追加它。最後,我需要用10號0,10個數字1和10個數字2.這30個元素的數組就是我想:在Python數組中生成整型隨機數

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種元素數。我相信這個問題出現在隨機數字中,即使我在循環內改變它,它也不會改變。有人知道如何做到這一點?

感謝

+2

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

回答

2

只要改變

while number[counter] > 10: 

while number[counter] >= 10: 

本來你的代碼只會停止追加只有內有它的超過10個實例一定數量你的數組。通過將其更改爲> =,程序將在第十次添加該數字時停止追加該數字。

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)