Результат: ученик использует Random как явный детерминированный источник состояния, реализует корректные алгоритмы случайного выбора и отделяет доказательство распределения от наблюдений конечной серии.
Содержание:
-
Понять состояние генератора
Randomкак объект с внутренним состоянием;- начальное зерно
seed; - одинаковая последовательность вызовов;
- сдвиг всей дальнейшей последовательности после дополнительного вызова;
- зависимость воспроизводимости от реализации и версии среды.
-
Использовать целочисленные диапазоны
Next();Next(maxValue)и диапазон[0, maxValue);Next(minValue, maxValue)и полуоткрытая верхняя граница;- равномерный индекс массива;
- включительная правая граница через корректное преобразование и проверку переполнения.
-
Использовать
NextDouble- исходный диапазон
[0, 1); - масштабирование в вещественный диапазон;
- событие Бернулли через сравнение с
p; - граничные вероятности
0и1; - влияние машинного округления на преобразованный диапазон.
- исходный диапазон
-
Управлять источником явно
- один генератор на логическую последовательность;
- создание на внешней границе сценария;
- передача параметром;
- запрет пересоздания с тем же зерном перед каждым значением;
- отделение случайного слоя от детерминированного вычислительного ядра.
-
Обеспечивать воспроизводимость
- фиксация
seed; - фиксация версии
.NET; - фиксация полного порядка обращений;
- повтор по зерну;
- повтор по сохранённому массиву случайных входов;
- различие этих двух гарантий.
- фиксация
-
Реализовывать базовые случайные операции
- заполнение массива и таблицы;
- выбор элемента и координаты;
- независимое включение каждого элемента;
- гистограмма категорий;
- случайное блуждание;
- детерминированная проверка границ каждого результата.
-
Реализовывать равномерное перемешивание
- алгоритм Фишера—Йейтса;
- выбор индекса из уменьшающегося диапазона;
- сохранение перестановки;
- инвариант окончательного суффикса;
- воспроизводимость;
- доказательство равномерности.
-
Выбирать без повторов
- частичное тасование;
- ровно
kэлементов; - сохранение или изменение исходного массива;
- равномерность упорядоченной и неупорядоченной выборки;
- резервуарная выборка при неизвестной заранее длине потока.
-
Выполнять взвешенный выбор
- неотрицательные веса;
- проверка положительной суммы;
- накопленные интервалы;
- нулевой вес;
- переполнение суммы;
- доказательство вероятности
weight[i] / total.
-
Строить вероятностный эксперимент
- пространство элементарных исходов;
- аналитическая вероятность;
- независимые серии;
- гистограмма и частота;
- среднее, дисперсия и разброс;
- сопоставление эмпирии с теоретической моделью.
-
Исследовать классические модели
- сумма костей;
- биномиальное распределение;
- геометрическое ожидание числа попыток;
- совпадение дней рождения;
- случайное блуждание;
- метод Монте-Карло;
- неподвижные точки перестановки.
-
Обнаруживать смещение алгоритма
- операция
%при несовместимом размере исходного диапазона; - метод отбраковки;
- наивное тасование;
- равномерные отдельные частоты без независимости;
- переходные частоты и длины серий;
- равномерная точка в геометрической области.
- операция
-
Работать с редкими и тяжёлыми исходами
- нулевой счётчик редкого события;
- ожидаемое число наблюдений;
- вероятность не увидеть событие;
- цензурированный опыт;
- коллекционер купонов;
- нестабильность выборочного среднего при тяжёлом хвосте.
-
Сравнивать стратегии на общих сценариях
- заранее сгенерированные одинаковые случайные данные;
- разность результатов на одной паре сценариев;
- уменьшение случайного шума;
- опасность общего генератора при разном числе вызовов;
- отделение свойства стратегии от расписания генератора.
-
Использовать вероятностную проверку
- односторонний алгоритм;
- отсутствие ложного отказа для правильного результата;
- вероятность ложного принятия;
- усиление независимыми раундами;
- алгоритм Фрейвальдса как пример;
- явная оценка ошибки
2^{-rounds}.

