В предыдущих частях работы (Часть 1, Часть 2) мы разобрали, что такое линейный конгруэнтный метод (ЛКМ), и как на его основе работает функция Rnd(), вшитая в скриптовый язык VBA, созданный Microsoft. Именно эта функция и "ответственна" за генерацию псевдослучайных чисел. Мы поняли, как ведет себя функция, если в качестве ее аргумента ввести число меньшее либо равное 0. Также мы выяснили, что эта функция работает с мнимым и реальными значениями своих аргументов, также мы поняли, как соотносятся некоторые мнимые значения аргумента функции с их реальными значениями.
Рубрика «генератор случайных чисел»
Как устроен генератор случайных чисел в VBA Excel Ч.3
2025-08-27 в 6:11, admin, рубрики: Excel, microsoft office, vba-макросы, генератор случайных чисел, генераторы случайных чисел, линейный конгруэнтный метод, псевдослучайные генераторы, псевдослучайные числа, случайные числаЧто не так? Три парадокса теории вероятностей
2025-05-23 в 16:29, admin, рубрики: генератор случайных чисел, заблуждения, интуиция, искажение, математика, парадокс, случайность, теория вероятностей, философия науки
Парадокс двух детей Вы встретили на прогулке соседей с сыном. Известно, что у них двое детей. Какова вероятность, что второй — тоже мальчик?
Генератор случайных чисел, застрявший на одном значении
2025-03-20 в 5:29, admin, рубрики: Nintendo, random number generator, super mario bros, баги, генератор случайных чисел, линейный конгруэнтный методМоё исследование посвящено мини-игре Green Toad House в New Super Mario Bros (NSMB). В этой мини-игре используется случайность, поэтому в процессе я изучил генератор случайных чисел (RNG) NSMB.
Чтобы пост не был слишком длинным, будем считать, что вы знаете, что такое RNG, а также о концепции порождающих значений (seed). Если нет, то вот хорошие ресурсы для изучения: pannenkoek2012 в YouTube (SM64), Retro Game Mechanics Explained в YouTube (SMW), Википедия.
Исследуем функцию
Генератор случайных чисел, который можно запустить в голове
2024-01-29 в 13:00, admin, рубрики: raku, random number generator, ruvds_переводы, генератор случайных чисел, генерация случайных чисел, ГСПЧ
Люди ужасно плохо справляются с придумыванием случайных чисел. Я хотел научиться быстро генерировать «достаточно случайные» числа. Мне не нужно было что-то совершенное, просто способ придумывания случайных цифр за полминуты. Поискав онлайн, я нашёл старый пост в Usenet, написанный Джорджем Марсалья:
Выберите двухразрядное число, допустим, 23. Оно будет вашим «порождающим значением» (seed).
Создайте новое двухразрядное число: количество десяток плюс шесть, умноженное на количество единиц.
Пример последовательности: 23 –> (2 + 6 * 3) = 20 –> (2 + 6 * 0) = 02 –> 12 –> 13 –> 19 –> 55 –> 35 –> …
Его период будет порядком множителя (6) в группе остатков, простых относительно модуля, 10 (в данном случае 59).
«Случайными цифрами» будет количество единиц двухразрядных чисел, то есть 3,0,2,2,3,9,5,… то есть члены последовательности mod 10.
Больше всего Марсалья известен своим набором тестов diehard-генераторов случайных чисел (RNG), так что он в этом понимает (здесь и далее под RNG я имею в виду генератор псевдослучайных чисел (PRNG)). Мне стало любопытно, почему это работает и как он выбрал 6.
Мы будем писать на Raku, языке для гремлинов. На случай, если вы тоже гремлин, под спойлерами я буду объяснять все странные особенности.
Читать полностью »
DIY квантовые вычисления: как я начал собирать квантовые схемы
2022-07-03 в 10:00, admin, рубрики: arduino, DIY, diy или сделай сам, ruvds_перевод, Блог компании RUVDS.com, генератор случайных чисел, квантовые вычисления, квантовые технологии, Разработка под Arduino, физика
Квантовые вычисления – это прекрасный, сложный, новый мир, но нам не обязательно ждать разработок из Кремниевой долины, чтобы начать экспериментировать самим. На деле существует малоизвестный, но вполне доступный способ собрать квантовый компьютер самостоятельно.Читать полностью »
Генераторы случайных чисел в разных ОС
2021-12-05 в 20:17, admin, рубрики: linux, virtualization, virtuozzo, windows, виртуализация, генератор случайных чисел, информационная безопасность, Разработка под Linux, разработка под windows, системное программирование
"Генерация случайных чисел слишком важна, чтобы оставлять ее на волю случая" - Роберт Р. Кавью
Собираем квантовый генератор случайных чисел
2021-07-10 в 14:02, admin, рубрики: DIY, diy или сделай сам, ruvds_перевод, Блог компании RUVDS.com, генератор случайных чисел, квантовый генератор, Программирование, Производство и разработка электроники, радиоактивность, физика
Цель этого проекта – создать настоящий квантовый генератор случайных чисел, то есть устройство, производящее на основе квантовых эффектов случайные числа. За реализацию случайности в нем будет отвечать ионизационная камера из пожарного извещателя.Читать полностью »
Случайные перестановки и случайные разбиения
2019-05-08 в 11:49, admin, рубрики: генератор случайных чисел, деревья, математика, перестановкиЯ много лет читаю курсы по комбинаторике и графам для студентов-математиков и computer scientists (как это по-русски, компьютерных научников?), раньше в Академическом университете, а теперь в СПбГУ. Программа у нас построена так, что эти темы проходят как часть «теоретической информатики» (другие темы в ней — алгоритмы, сложность, языки и грамматики). Не могу сказать, насколько это оправдано метафизически или исторически: всё же комбинаторные объекты (графы, системы множеств, перестановки, клетчатые фигуры и др.) начали изучали задолго до появления компьютеров, и сейчас последние хотя и важная, но далеко не единственная причина интереса к ним. Но так посмотреть на самых спецов по комбинаторике и по theoretical computer science — это удивительно часто одни и те же люди: Ловас, Алон, Семереди, Разборов и далее. Наверно, есть на то свои причины. На моих уроках часто очень нетривиальные решения сложных задач предлагают чемпионы олимпиадного программирования (их перечислять не буду, кому любопытно посмотрите топ codeforces.) В общем, думаю, что некоторые вещи из комбинаторики могут быть интересны сообществу. Говорите, если что так или не так.
Читать полностью »
CPU-функции RDRAND и RDSEED стали доступнее
2019-02-22 в 22:28, admin, рубрики: Delphi, RDRAND. RDSEED, ассемблер, генератор случайных чисел, ГСЧ, криптографияВсем привет!
Сам я криптографией не занимаюсь, но кому то вполне может пригодится мое небольшое исследование. Решил разобраться со встроенными в процессор функциями RDRAND и RDSEED. Компилятор Delphi сказал Undeclared identifier. Хмм. Уже давно существует BMI, BMI2, AVX, AVX2 и даже AVX-512, а дельфийцы остановились на SSE4.2. Не беда. Скомпилируем код сами.
Сначала сделал проверку на поддержку данных функций процессором. Конечно же CPUID. Использовать CPUID можно начиная с первых Pentium процессоров. Надеюсь никто не додумается запустить CPUID на 486 машине, ибо ее там еще не было. Кстати RDRAND и RDSEED до процессоров IvyBridge также не существует.
function CPU_support_RDRAND: Boolean;
asm
mov rax, $01
cpuid
test ecx, 40000000h //тестируем 30-й бит
setne al
end;
function CPU_support_RDSEED: Boolean;
asm
mov rcx, 0
mov rax, $07 //страница №7
cpuid
test ebx, 40000h //тестируем 18-й бит
setne al
end;
Оказалось, что мой Core i7 G6950X Extreme поддерживает данные функции. Поэтому дальше решил скомпилировать байт-код вручную. Для опытных приведу код REX и REX.W префиксов. Возможно вы захотите записать результат в другой регистр:
const
REX_RDRAND32: Byte = $F0; //(11b:REG, 110b:OPCODE, 000b:EAX)
REX_RDSEED32: Byte = $F8; //(11b:REG, 111b:OPCODE, 000b:EAX)
REX_W_RDRAND64: Byte = $48; //(11b:REG, 110b:OPCODE, 000b:RAX)
REX_W_RDSEED64: Byte = $48; //(11b:REG, 111b:OPCODE, 000b:RAX)
Заблуждения игроков при оценке рисков. Контроль генератора случайных чисел в разработке
2018-12-19 в 5:01, admin, рубрики: Gamedev, gamedevelopment, RNG, seed, генератор псевдослучайных чисел, генератор случайных чисел, Дизайн игр, заблуждения, Игры и игровые приставки, манипуляции, разработка игр, случайностьЧеловеческий мозг по своей природе очень плохо умеет оценивать вероятность срабатывания случайных событий, на основании выданной числовой оценки. И довольно хорошо на основании качественных оценок. А все потому, что человек мысленно делает конвертацию числовых вероятностей в качественные оценки, и делает это очень субъективно:
- 80% попадания выстрела в игре — ну это почти гарантированное попадание;
- 80% того, что ваш товарищ хоть когда-нибудь отдаст долг — не-не-не, так не пойдёт, это слишком большой риск;
- 5% получения критического урона он NPC врага — маловероятно, риск можно игнорировать;
- 1% риск падения сосульки, если пройти под крышей с капающими метровыми сосульками — ещё чего, лучше обойти с другой стороны тротуара;
- 51% вероятность выигрыша в мини-игре в большой РПГ — можно рассчитывать на то, что после 20 ставок я чуть-чуть выиграю или, как минимум, останусь при своих… через 20 ставок… как такое могло случиться, что я проиграл половину всего своего золота? Тут явно сломан генератор случайных чисел!

В статье будут рассмотрены следующие вопросы:
- ошибочные допущения в оценке вероятностей;
- конкретные примеры заблуждений игроков и фактические вероятности «редких» событий;
- генератор случайных чисел (вообще-то псевдослучайных);
- ранние простые генераторы псевдослучайных чисел на примере Final Fantasy I;
- подходы к реализации случайных событий с воспроизводимостью и без;
- примеры удачно внедренных разных подходов и манипуляции в Fire Emblem.
