【问题标题】:How can I get same result with same seed set at random.shuffle()如何在 random.shuffle() 使用相同的种子集获得相同的结果
【发布时间】:2016-07-15 00:26:52
【问题描述】:

我有以下代码:

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']

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

【问题讨论】:

  • 您确实重置了种子,但您没有将 myList 重置为相同的初始状态。请注意,shuffle()就地修改列表。

标签: python math random


【解决方案1】:

只需将@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']

【讨论】:

    猜你喜欢
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 2023-03-23
    • 2019-06-11
    相关资源
    最近更新 更多