Если вам нужны повторяющиеся случайные последовательности, вызовите random.seed
, используя известное значение.
>>> random.seed(3)
>>> [random.choice("abc") for x in range(10)]
['a', 'c', 'c', 'a', 'b', 'c', 'b', 'c', 'c', 'a']
>>> random.seed(3)
>>> [random.choice("abc") for x in range(10)]
['a', 'c', 'c', 'a', 'b', 'c', 'b', 'c', 'c', 'a']
Тот факт, что оба списка идентичны, не является совпадением.
На основе на ваш комментарий, я думаю, вы можете использовать defaultdict
.
>>> from collections import defaultdict
>>> import random
>>> values = [1,2,3,4]
>>> d = defaultdict(lambda: random.choice(values))
>>> [d['foo'] for _ in range(20)]
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
Первый поиск для любого данного ключа выбирается случайным образом, а затем запоминается. Последующие поиски всегда используют это первое значение.