2016-08-08 55 views
0

Ich versuche, ein Array mit 30 ganzzahligen Elementen zwischen 0 und 2 zufällig ausgewählt. Wenn eine Nummer 10 mal gewählt wird, kann ich sie nicht mehr anhängen. Am Ende muß ich ein Array mit 30 Elementen mit 10 Zahlen 0, 10 Nummern 1 und 10 Zahlen 2. Hier ist, was ich versuche:Generate Integer Zufallszahlen in Python Array

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) 

Als Ergebnis habe ich mehr als 10 Elemente der gleichen Nummer. Ich glaube, dass das Problem in der Zufallszahl ist, die ich in der Weile einsetze, wird nicht geändert, selbst wenn ich es innerhalb der Schleife ändere. Jemand weiß, wie man das macht?

Dank

+2

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

Antwort

2

Gerade

ändern
while number[counter] > 10: 

zu

while number[counter] >= 10: 

würde nur eine bestimmte Anzahl anhängt nur Ihren Code Ursprünglich stoppen, wenn es in mehr als 10 Fällen davon waren Ihr Array. Wenn Sie es zu einem> = ändern, hört das Programm auf, die Nummer anzuhängen, sobald sie zum zehnten Mal hinzugefügt wird.

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)