는, 그 키는 씨라고하며, 새 random.Random()
인스턴스에서 임의 초기 값을 설정할 수 있습니다
def keyed_shuffle(x, seed=None):
random_obj = random.Random(seed)
random_obj.shuffle(x)
당신은 너무 직접 random.seed()
및 random.shuffle()
을 사용할 수 있지만 사용 자신의 random.Random()
인스턴스는 random
모듈이 사용하는 싱글 톤 random.Random()
인스턴스의 시드를 설정하지 않으므로 해당 모듈의 다른 용도에는 영향을 미치지 않습니다.
시드는 정수 (직접 사용) 또는 해시 가능 객체 일 수 있습니다.
데모 :
>>> a = [10, 50, 42, 193, 21, 88]
>>> keyed_shuffle(a) # no seed
>>> a
[42, 10, 88, 21, 50, 193]
>>> a = [10, 50, 42, 193, 21, 88]
>>> keyed_shuffle(a) # again no seed, different random result
>>> a
[88, 50, 193, 10, 42, 21]
>>> b = [10, 50, 42, 193, 21, 88]
>>> keyed_shuffle(b, 42) # specific seed
>>> b
[193, 50, 42, 21, 10, 88]
>>> b = [10, 50, 42, 193, 21, 88]
>>> keyed_shuffle(b, 42) # same seed used, same output
>>> b
[193, 50, 42, 21, 10, 88]
>>> c = [10, 50, 42, 193, 21, 88]
>>> keyed_shuffle(b, 81) # different seed, different random order
>>> c
[10, 50, 88, 42, 193, 21]
에 '키의 소유자가'무엇입니까? '결정적으로 동일한 셔플을 생산'한다는 것은 무엇을 의미합니까? –
그래서 무작위가 아닌 랜덤을 원하십니까? 네가 묻고있는거야? –
@ 2-BitAlchemist. 키에 따라 키의 순서를 섞어서 임의의 순열을 출력하는 알고리즘이 필요합니다. 동일한 데이터 시퀀스에서 동일한 키를 입력하여 셔플을 다시 적용하면 동일한 결과를 얻게됩니다. 그렇지 않으면 무작위 셔플. 동일한 데이터에서 같은 키를 사용하면 "un-shuffle"을 할 수 있습니다. – curious