Случайные и псевдослучайные числа

25.02.2023 0 Автор : Марина Николаевна
Случайные и псевдослучайные числа

Случайные числа — это последовательность чисел, в которой невозможно предсказать следующее число, даже зная все предыдущие.

Случайные числа. псевдослучайные числа.

Для того, чтобы получить случайное число нужно произвести какое-нибудь действие, например, бросить игральный кубик, измерить какой-то шумовой сигнал, принятый из космоса и т.д. Результаты проведения лотереи — это таблица случайных чисел.

Но это не касается компьютеров.

Для использования в компьютерах математики придумали алгоритмы получения псевдослучайных («как бы случайных») чисел. Именно такие алгоритмы называют генераторами случайных чисел или датчиками случайных чисел.

Для обычного пользователя программы псевдослучайные числа не отличимы от случайных, но они вычисляются по некой математической формуле: зная первое число (зерно), можно по формуле вычислить второе, третье и т.д.

Случайные числа. Как получается генератор случайных чисел

Программу получения случайных чисел можно написать самостоятельно. Как правило, эту программу называют генератором случайных чисел.

Ранее долгое время популярностью пользовался линейный конгруэнтный  метод, предложенный американским математиком Лемером Д.Г. в 1949 году.

Здесь a, c, m  — некоторые натуральные числа, а знак % обозначает остаток от деления.

Понятно, что остаток от деления на m  — это число на отрезке [0; m-1], т.е. через  m шагов последовательность повториться. Задача выбора параметров a, c, m заключается в том, чтобы добиться максимально возможной длины последовательности.

Получлось так, что на определнном ходу программа выходит на зерно — 0, т.е. дальше значения будут опять повторяться:1,4,5,0,1,4,5,0… Другие числа, кроме  0,1, 4, 5, вообще в последовательности не появляются. Период такой последовательности  — 4.

Если же выбрать последовательность: a = 1, c = 3, m = 8, то для того же зерна Хо = 0 получаем последовательность:

0, 3, 6, 1, 4, 7, 2, 5, 0…

В данной последовательности есть все числа от 0 до 7 включительно, т.е. период последовательности — 8.

Хорошие значения a, c, m, обеспечиващие большой период последовательности, можно найти как в литературе, так и в Интернете. Например,

Случайные числа. Генератор случайных чисел в Python

Функции для работы со случайными числами собраны в модуле random. В библиотеке Python используется один из наиболее совершенных алгоритмов для генерации псевдослучайных чисел — «вихрь Мерсенна», разработанный в 1997 году

Для получения псевдослучайных чисел в заданном диапазоне используют функции из модуля random:

random (a, b) — случайное целое  число на отрезке [a,b];

uniform (a, b) — случайное вещественное число из отрезка [a, b].

Для того, чтобы записать в переменную n случайное число в диапазоне от 1 до 6 (результат бросания игрального кубика),  используем следующие команды:

from random import randint
n = randint (1, 6)

Первая строка программы — из модуля random импортируется или загружается функция randint.

Вторая строка программы вызывается функция для получения случайного числа.

Вещественное случайное число на отрезке [5; 12] получается следующим образом:

from random import uniform
x = uniform (5, 12)

Работу с целыми числами на языке программирования Python можно изучить по ссылке.