2014-12-12 2 views
0

"임의 재생"기능을 사용하지 않고 100 개의 난수 목록을 임의로 섞은 다음 1000 번 스왑/셔플하는 프로그램을 만들고 있습니다. 문제는 내 프로그램이 올바르게 작동하지 않는다는 것입니다. 숫자는 철저히 섞여 있지 않습니다. for 루프를 사용하여 1000 번 이상 숫자를 임의로 섞을 수있는 방법을 찾아 낼 수 없습니다. 도움을 주시면 감사하겠습니다. 당신이 당신이 동일한 목록을하게 될 겁니다 배의 짝수를 할 경우"셔플"기능을 사용하지 않고 목록을 셔플하는 프로그램은 어떻게 만듭니 까?

import random 
originalnum_list=[] 
num_list=[] 
num_list1 = [] 
num_list2 = [] 
for num in range(100): 
    num_list1.append(random.randrange(0,51)) 

for num in range(100): 
    num_list2.append(random.randrange(0,51)) 
originalnum_list.append(num_list1) 
originalnum_list.append(num_list2) 
print "The computer entered: " + str(originalnum_list) 

for shuffle in range(0,1001): 
    shuffle=num_list1 
    num_list1=num_list2 
    num_list2=shuffle 
num_list.append(num_list1) 
num_list.append(num_list2) 
print "The shuffeled result is: " + str(num_list) 
+0

왜 '셔플'기능을 사용하지 않으시겠습니까? 이것은 단지 운동입니까? – BrenBarn

+0

셔플의 논리는 무엇입니까? 나는 성분을 뒤섞어서 어떤 임의성을 볼 수 없습니까? – Marcin

답변

0

이것은 단지 num_list1 및 num_list2

for shuffle in range(0,1001): 
    shuffle=num_list1 
    num_list1=num_list2 
    num_list2=shuffle 

를 교환.

으로 어떻게 작동합니까? 공정해야합니까?

1

내 이해는 목록을 취한 다음 해당 목록의 내용의 위치를 ​​임의로 조정하는 프로그램을 원한다는 것입니다.

import random 
def list_randomizer(lst): 
    result = [] 
    while len(lst) > 0: 
     index = random.randrange(0,len(lst)) 
     result.append(lst.pop(index)) 
    return result 

이 기능은 입력 한 목록을 임의로 섞습니다. for 루프를 통해 원하는만큼 쉽게 반복 할 수 있습니다.

for i in range(1000): 
    list = list_randomizer(list) 

이렇게하면 업데이트 된 목록이 계속해서 1000 번 재구성되는 함수로 전달됩니다.

관련 문제