2016-08-08 2 views
0

무작위로 선택한 0과 2 사이의 30 정수 요소 배열을 만들려고합니다. 어떤 숫자가 10 번 선택되면 더 이상 추가 할 수 없습니다. 결국, 내가 노력하고있어 10 개 숫자 0, 10 개 숫자 1 ~ 10 개 숫자 여기에 2. 30 개 요소 배열을 것이 필요합니다 결과파이썬 배열에서 정수 난수 생성

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 개 이상의 인스턴스 내에서 있었다 경우에만 특정 번호를 추가 중지 할 코드 귀하의 배열. 그것을> =로 변경하면 프로그램은 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)