Как случайным образом выбрать элемент из списка?
Предположим, у меня есть следующий список:
foo = ['a', 'b', 'c', 'd', 'e']
Какой самый простой способ случайного выбора элемента из этого списка?
Если вы хотите, чтобы значение действительно было случайным , тогда я предлагаю использовать объект SystemRandom
из модуля random
с методом choice
:
>>> import random
>>> sr = random.SystemRandom()
>>> foo = list('abcde')
>>> foo
['a', 'b', 'c', 'd', 'e']
А теперь:
>>> sr.choice(foo)
'd'
>>> sr.choice(foo)
'e'
>>> sr.choice(foo)
'a'
>>> sr.choice(foo)
'b'
>>> sr.choice(foo)
'a'
>>> sr.choice(foo)
'c'
>>> sr.choice(foo)
'c'
Если вы хотите детерминированный псевдослучайный выбор, используйте функцию choice
(которая на самом деле является связанным методом для объекта Random
):
>>> random.choice
<bound method Random.choice of <random.Random object at 0x800c1034>>
Это кажется случайным, но на самом деле это не так, что мы можем увидеть, если повторить его повторно:
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')