Случайность, это события, идущие по чужому плану. (Рудольф Гесс, заметки на полях мемуаров Т. Рузвельта)

Теория

Насколько случайны случайные числа в вычислительной технике? Обычно не случайны. Все из-за того, что создать случайную последовательность нельзя, так как при создании используется некий алгоритм, трансформирующий начальное состояние в случайное число. В данной лабораторной работе будет разрабатываться и тестироваться генератор псевдослучайных чисел. ГПСЧ - алгоритм, позволяющий создать случайную последовательность чисел (в двоичном представлении, в виде дроби или в целом формате). Как создать ГПСЧ? Прогнозируемый алгоритм создать достаточно просто, например, постоянно деля основное число на дополнительное, после сохраняя результат (нормализированное) в основное, а дополнительно как-то меняя.

Простой способ:

seed = 123486
seed = 375123611 * seed + 13671323
res = seed % 416252 % 10
2 1 4 1 0 3 4 5 8 1

Однако нередко в таком генераторе возникают проблемы с очень частым появлением одного числа или же возможностью прогнозирования следующего числа (например, после 1 2 3 с высоким шансом идет последовательность 4 5), а прогнозов для ГПСЧ, по идее, не должно быть.

Задача

Данная лабораторная нацелена на создание программы, потому только алгоритм оцениваться не будет.

1 часть

От вас требуется создать генератор псевдослучайных чисел. Можете воспользоваться любым алгоритмом, однако встроенные функции случайных чисел использовать нельзя. Объясните почему вы выбрали именно такой алгоритм и коэффициенты для него. Генератор должен возвращать значения от 0 до 9 включительно.

2 часть

Соберите статистику с генератора, определите частоту получения значений, а также вероятность получения следующего значения. Вывод:

      0     1     2     3     4     5     6     7     8     9
0  10.9  10.1   9.7   8.4   8.6  11.4  10.4  11.4   8.6  10.5
1  10.1  10.0   9.8   9.9  11.0  10.4   9.4   9.9   9.3  10.2
2   8.6  10.7   9.7  10.2   9.7  10.2  10.5  10.6   8.6  11.2
3   9.5   9.2  10.4  10.8   9.6   9.2  10.1  10.9  10.4   9.9
4   9.4   9.9   9.7  11.9  10.9  10.3   8.3   9.3   9.8  10.5
5  12.0  10.5  10.1   8.1   9.9   9.2  10.0  10.5  10.8   8.9
6   9.7  10.2  10.0  10.7  11.0   9.5  10.0  10.0   8.9  10.0
7  10.0   9.8   8.8  11.1   9.4   9.6  10.4  11.6  11.4   7.9
8   8.3  10.2   7.5  10.6  10.7  10.1   9.6  11.5  10.6  10.9
9   9.1  10.4  10.1   8.6  11.3   9.1  11.1  11.1   9.6   9.6

Если форматирование таблицы оставите в таком же виде, то это хорошо, но подуймате и над другими форматами. В данной таблице: на каждое значение выделяется 5 символов, точность 1 или 2. Чем выше случайность, тем выше оценка. Выборка (или количество последовательно полученных случайных чисел) должна быть длиной больше 1000.

Под статистикой подразумевается не только таблица выше, но и данные, которые помогут определить насколько рандомна ваша последовательность.

3 часть

Финальным заданием является подстройка генератора, делая его более случайным. Алгоритм может варьироваться. Кроме программы также требуется объяснить алгоритм максимально подробно. Хорошим дополнением будет анализ не только следующего числа, но и последующего. Возможно, стоит в зависимости от уже проанализированных чисел выбирать следующее. Сюда также входит анализ статистики.

На Главную