2016-07-15 103 views
1

我有以下代码:我怎样可以得到()相同的种子设定在random.shuffle同样的结果

import random 
SEED = 448 

myList = [ 'list', 'elements', 'go', 'here' ] 
random.seed(SEED) 
random.shuffle(myList) 
print "RUN1: ", myList 

random.seed(SEED) 
random.shuffle(myList) 
print "RUN2: ", myList 

现在我希望RUN1和RUN2,产生相同的结果:

RUN1: ['here', 'go', 'list', 'elements'] 
RUN2: ['here', 'go', 'list', 'elements'] 

但它代之以。

RUN1: ['here', 'go', 'list', 'elements'] 
RUN2: ['elements', 'list', 'here', 'go'] 

我该如何修改我的代码以获得预期的结果行为?

+3

你做重置种子,但你没有重置'myList'相同的初始状态。请注意,'shuffle()'修改列表_in-place_。 –

回答

3

只需将@Tim Peters的评论添加到答案中即可。你需要每次都重新设置列表中,因为random.shuffle是破坏性的:

import random 
SEED = 448 

original_list = ['list', 'elements', 'go', 'here'] 

random.seed(SEED) 
my_list = original_list[:] 
random.shuffle(my_list) 
print "RUN1: ", my_list 

random.seed(SEED) 
my_list = original_list[:] 
random.shuffle(my_list) 
print "RUN2: ", my_list 

# Output: 
# RUN1: ['here', 'go', 'list', 'elements'] 
# RUN2: ['here', 'go', 'list', 'elements'] 
相关问题