Архив рубрики: Модули и классы Python

Python. Генерация псевдослучайных чисел. Модуль random

Скрипты выполнялись под Python версии 2.7.9.

Генерация случайных чисел используется для:

  • создания идентификаторов сессий,
  • создания токенов (CSRF и т.п.),
  • создания произвольных паролей и кодов доступа,
  • создания произвольных последовательностей данных в играх,
  • создания уникальных номеров для маркетинговых акций (подарочные карты, розыгрыш призов по коду и т.п.).

В Python существует несколько основных модулей и классов, связанных с генерацией псевдослучайных чисел:

  • _random - реализует алгоритм Mersenne Twister, написан на языке C;
  • класс Random - наследует _random, написан на языке Python;
  • модуль os - предоставляет доступ к внешнему источнику случайных чисел, в случае Linux - это /dev/urandom;
  • класс SystemRandom наследует Random, но для генерации случайных чисел обращается к os.urandom;
  • класс WichmannHill наследует Random, реализует алгоритм Вихмана-Хилла для генерации псевдослучайных чисел.

В качестве основного генератора псевдослучайных чисел Python использует Mersenne Twister, доступ к которому предоставляет класс Random. Mersenne Twister имеет период 2 ** 19937-1. Это один из наиболее протестированных генераторов случайных чисел. Основная часть реализована на C. К сожалению, не подходит для криптографических задач.

Читать далее