带种子的Python随机序列

Fav*_*las 17 python random

嗨,我正在为一个学校项目做这个(所以我不能使用任何高级功能),我正在使用Python 2.6.6.

我有一个从1到1000的数字列表,我的种子将是448.

如何使用该种子生成随机序列,以便列表中的数字将在不同的索引中?

是否有可能,知道种子,将列表中的元素返回到初始位置?

对不起,如果它很混乱,但英语不是我的母语.

谢谢,

Favolas

Hug*_*ell 42

import random
SEED = 448

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

print myList
Run Code Online (Sandbox Code Playgroud)

结果是

['here', 'go', 'list', 'elements']
Run Code Online (Sandbox Code Playgroud)

您的列表现在是伪随机的.

'Pseudo'很重要,因为具有相同种子和项目数的所有列表将以相同的"随机"顺序返回.我们可以用它来取消你的列表; 如果真的是随机的,这是不可能的.

Order = list(range(len(myList)))
# Order is a list having the same number of items as myList,
# where each position's value equals its index

random.seed(SEED)
random.shuffle(Order)
# Order is now shuffled in the same order as myList;
# so each position's value equals its original index

originalList = [0]*len(myList)   # empty list, but the right length
for index,originalIndex in enumerate(Order):
    originalList[originalIndex] = myList[index]
    # copy each item back to its original index

print originalList
Run Code Online (Sandbox Code Playgroud)

结果是

['list', 'elements', 'go', 'here']
Run Code Online (Sandbox Code Playgroud)

田田!originalList现在是myList的原始排序.