Как работает генератор чисел: «Как работает генератор случайных чисел?» — Яндекс Кью

«Как работает генератор случайных чисел?» — Яндекс Кью

Популярное

Сообщества

МатематикаИнформатикаПростыми словами

Простыми словами

  ·

74,7 K

Ответить1УточнитьДостоверно

Вадим Романский

Физика

7,1 K

младший научный сотрудник ФТИ им. Иоффе  · 28 апр 2020  ·

astropolytech

Большинство использующихся генераторов случайных чисел на самом деле псевдо-случайные. В них генерируется последовательность чисел со свойствами, близкими к тем, какими должна обладать последовательность настоящих случайных чисел. Но сама это последовательность в них фиксирована. Либо может зависеть от некоторых параметров, но впринципе заранее известным образом. Самая простая модель генератора псевдослучайных чисел — это подбросить тысячу раз монетку, записать, а потом использовать эту фиксированную последовательность, когда нужно случайное число. Для внесения большей случайности место, с которого программа начинает смотреть в эту последовательность задают с помощью внешнего случайного параметра, например времени запуска программы.

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

астрофизическое образование

Перейти на vk.com/astropolytech

2 эксперта согласны

74,4 K

Airat

27 мая 2020

можно еще использовать данные полученные от атмосферных шумов. рандом орг так делает.

Комментировать ответ…Комментировать…

Елена Фадеева

Технологии

129

Официальный представитель компании МегаФон  · 27 нояб 2020

Забавно, но генераторы случайных чисел на самом деле генерируют совсем не случайное число. Корректнее будет называть их «генераторы ПСЕВДОслучайных чисел».
Самый распространённый способ получения псевдослучайных чисел придумал американский математик Деррик Генри Лемер в 1949 году. Им стал линейный конгруэнтный метод, в основе которого лежит математическая формула… Читать далее

16,1 K

Комментировать ответ…Комментировать…

Первый

Каменный портал

7

Поставляем камень для ландшафтного дизайна по России.   · 8 окт 2020  · kamportal.ru

Отвечает

Игорь Шевков

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

Каталог камня для ландшафта

Перейти на kamportal.ru24,3 K

Комментировать ответ…Комментировать…

Георгий Андреев

17

Математик, аналитик, автоматизатор.  · 18 дек 2020

Обожаю такие вопросы, особенно учитывая, что сюда можно вписать кучу нешкольной математики, но она будет понятна, если совсем чуть-чуть посидеть.
Есть простейшие методы, например:
Конгруэнтный метод
Смысл в том, что каждое следующее число генерируется из предыдущего, причем первое — можно задать случайно
формула выглядит так: v_(i+1) = (v_(i) * a + c)mod(m) (нижнее… Читать далее

14,9 K

Инкогнито 0429

4 марта

Очень интересно.. 🥰👍

Комментировать ответ…Комментировать…

Ruslan Y

317

Инженер электронной техники, программист.   · 25 июн 2021

Лучший генератор шума — pn переход, шумы с которого подаются на аналого — цифровой преобразователь, выход с которого и есть случайное число с нормальным распределением. В ОС linux функция rand может возвращать CRC32 из буферных областей (блоков) системной памяти, содержимое которых очень сильно изменяется непрерывно даже есть устройство /dev/rand, которое командой… Читать далее

Комментировать ответ…Комментировать…

Первый

Ибрагим Г.

2

17 нояб 2022

Генератор истинно случайных чисел (Радио шум) https://2qbit.com/true-random-number-generator/ Для получения истинно случайных чисел, web-приложение 2qBit.com использует “аппаратный генератор случайных чисел”, представляющий собой радиоприемник, настроенный на прием частот на которых нет вещания. Атмосферные шумы, захватываемые радиоприемником, являются качественным… Читать далее

Комментировать ответ…Комментировать…

Александр И.

13

30 апр 2020

«Генератором случайных чисел» практически всегда называется «генератор ПСЕВДОслучайных чисел«. По факту, они выглядят как случайные, хотя на практике такими не являются. Работает довольно просто: идет привязка к нескольким автоматически именяемым параметрам по формуле и выдается число-результат.

32,0 K

Валерий

9 июля 2020

Не понимаю, но стремлюсь понять, Мат статистику, забыл теорию вероятности, тоже .А изучать по новой нет ни сил не… Читать дальше

Комментировать ответ…Комментировать…

Вы знаете ответ на этот вопрос?

Поделитесь своим опытом и знаниями

Войти и ответить на вопрос

Что такое генератор случайных чисел или ГСЧ

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

Алгоритм генератора случайных чисел часто используется в видеоиграх, где он устанавливает разные результаты каждый раз, когда его запускают. Возможно, вы заметили, что даже если вы играете на одном уровне в игре, каждый раз, когда вы пытаетесь выполнить миссию, он не будет одинаковым. Различия не будут наблюдаться в локации или требованиях к миссии, но они будут наблюдаться в количестве приближающихся врагов и областях их появления, изменениях климата и различных препятствиях, которые встречаются между ними. Это делает игру более захватывающей и интересной.

В противном случае, после нескольких попыток игра покажется скучной, так как вы сможете предсказать события, которые произойдут дальше. Это может показаться простым, но для компьютера – генерировать случайные числа – это сложная задача, требующая следовать точным инструкциям, закодированным в нём.

Истинный ГСЧ против псевдо ГСЧ

Есть два типа генераторов случайных чисел: истинные и псевдо.

  • Алгоритм истинного генератора случайных чисел создаётся с помощью аппаратного устройства, которое использует очень крошечные физические процессы для генерации случайных чисел. Так как алгоритм не написан; следовательно, истинный ГСЧ не может быть взломан для предсказания. Он обычно используется в системах, ориентированных на безопасность, по всему миру и в некоторых формах шифрования.
  • Алгоритм генератора псевдослучайных чисел используется в областях, где нет проблем с безопасностью, а случайность используется, чтобы избежать повторений и сделать что-то более интересное для конечного пользователя. Реализовать технологию дешевле и быстрее, поскольку она не требует оборудования и может быть легко встроена в программный код. Хотя этот процесс не является полностью случайным и определяется на основе алгоритма, он больше подходит для игр и программ.

Какие приложения используют ГСЧ

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

  • Азартные игры: бинго, карточные игры, лотереи и подобные игры.
  • Игры со сбором добычи: все игры, требующие от игроков сбора добычи для использования в игровом процессе, например, PubG, Diablo и Borderlands используют ГСЧ. Возможность получать лучшую добычу каждый раз – вот причина, по которой люди становятся зависимыми от них.
  • Приключенческие игры: такие игры, как Марио и Покемон Го используйте алгоритм генератора случайных чисел, чтобы определить, какие предметы будут добавлены, и каждый раз вы встречайтесь с новым претендентом на покемона.
  • Процедурно-сгенерированные игры: все игры, в которых нет предварительно разработанных карт и уровней, но которые были разработаны в игре с использованием процедурного программирования, таких как Minecraft и Civilization. Это помогает создать всю игру с использованием алгоритма.
  • Соревновательные игры: некоторые соревновательные игры, например, Counter-Strike используйте алгоритм генератора случайных чисел, чтобы регулировать, как пули поражают цели.

Помимо игровых приложений, есть код случайных чисел в JavaScript, используемый разработчиками и кодировщиками во всём мире для включения генератора случайных чисел в их программы. У Google есть свой очень интересный инструмент, который также основан на теории случайных чисел JavaScript и может генерировать случайные числа. Этот инструмент может пригодиться, когда вы играете в игры с друзьями и семьей. Чтобы посмотреть ГСЧ Google, нажмите здесь.

Манипуляции с ГСЧ

Я уже обсуждал различия между истинным ГСЧ и псевдо ГСЧ и тот факт, что в играх используется псевдо ГСЧ, основанный на алгоритме. Некоторые увлеченные геймеры используют утилиты эмуляции для анализа игр и выявления лазеек, которые можно использовать для управления результатами, даже если используется алгоритм генератора случайных чисел.

ГСЧ на основе алгоритма использует начальное число, которое представляет собой комбинацию определенных факторов и генерирует результат в игре. Это применяемые законы математики, и поскольку 1+1 всегда равно 2, аналогично, если известны факторы в игре, которые приносят желаемый результат, то вы всегда можете достичь того же результата.

Например, если игра требует от игрока выбрать определенного персонажа с определенными усилениями, и результатом будет легкая битва с боссом, то этот шаблон будет постоянным, и все, кто выберет одни и те же варианты, будут иметь одинаковые результаты. Но, для обычного игрока это было бы невозможно, и псевдо-ГСЧ всегда казался бы истинным ГСЧ.

Почему геймеры ненавидят ГСЧ

Геймеров можно разделить на соревнующихся игроков, спидраннеров и средних игроков. Любой конкурентоспособный игрок, овладевший техникой игры и движениями, захочет бросить вызов другим игрокам и побеждать на основе навыков и, несомненно, возненавидит игру, если на результат повлияет генератор случайных чисел. Точно так же спидраннер хотел бы завершить игру как можно скорее, но алгоритм генератора случайных чисел включает тормоза, создавая каждый раз неизвестные и неожиданные сценарии в игре.

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

Кто такой RNGesus?

Обычные игроки, которые играют только для того, чтобы развлечься или скоротать время, не заботятся о результате игры. Но, опытные профессиональные игроки ненавидят проигрывать только потому, что удача была не в их пользу.

Игроки, которые проигрывают, часто винят в своих поражениях злой ГСЧ, который выгоден их противникам. Там где зло, должен быть Бог – RNGesus.

Среди геймеров во всем мире появился новый термин, RNGesus, который больше соответствует игре слов с «Иисусом». Поскольку Иисус Христос считается нашим спасителем в реальном мире, RNGesus – это вообразимая сущность, созданная для спасения игроков от пагубных последствий ГСЧ. Это нигде не доказывается, но началось как миф, а теперь распространилось по игровому сообществу, как лесной пожар.

Окончательный вердикт по ГСЧ – хорошо или плохо?

На этот вопрос сложно ответить, и определенно не может быть одного и того же ответа для всех. В то время как среднестатистические геймеры утверждают, что это хорошо, другим нравится соревновательный дух.

Алгоритм генератора случайных чисел действительно сохраняет непредсказуемость и интересность каждый раз, когда вы играете на одном уровне. Он стал важной частью многих игр, предлагая разнообразие, например, головоломки, карточные игры, ролевые игры и многие другие. Но, для геймеров, которые верят в навыки как в единственный способ пройти игру, ГСЧ подрывает их потенциал, когда вытаскивает что-то случайное из коробки.

Игры предназначены для развлечения и удовольствия. Если у вас хороший ГСЧ, вы сможете получить лучшие варианты, несмотря на низкие шансы. В случае плохого ГСЧ, вы получите худший результат, даже если вы играли в игру именно так, как должно. Правда в том, что это не то, что можно воспринимать так серьёзно, особенно если оно основано на алгоритме генератора случайных чисел.

Что такое случайные числа и как они используются?

К

  • Рахул Авати

Что такое случайное число?

Как следует из самого термина, случайное число — это число, выбранное случайно, то есть случайным образом из набора чисел. Все числа в указанном распределении имеют равную вероятность быть выбранными случайным образом.

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

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

Объяснение случайных чисел

Чтобы число в последовательности или распределении было действительно случайным, оно должно быть независимым. Независимость чисел означает отсутствие корреляции между последовательными числами. Кроме того, эти числа должны встречаться в раздаче примерно с одинаковой частотой.

Случайные числа почти всегда получаются из набора однозначных десятичных чисел: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Задача генерации случайных цифр из этого набора чисел с помощью физических значит не тривиально. Распространенной схемой является выбор пронумерованных мячей для пинг-понга из набора из 10, что часто встречается в лотерейных играх и лотереях.

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

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

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

Иногда цифры в десятичных разложениях иррациональных чисел используются для получения случайных чисел. Большинство целых чисел имеют иррациональные квадратные корни, поэтому если ввести в калькулятор строку из шести или восьми цифр, а затем нажать кнопку извлечения квадратного корня, можно получить последовательность цифр, которая кажется случайной. Были разработаны и другие алгоритмы, предположительно генерирующие случайные числа.

Проблема с этими методами заключается в том, что они нарушают второе условие в определении случайности, как указано выше. Существование любого алгоритма генерации чисел создает будущие значения на основе прошлых и/или текущих. Цифры или числа, сгенерированные таким образом, называются псевдослучайными .

Методы получения случайных чисел

Статистики, математики и ученые долго искали идеальный источник случайных чисел. Одним из часто используемых методов была выборка электромагнитного шума. Этот шум, создаваемый хаотическими движениями электронов, дырок или других носителей заряда в материалах и в пространстве, считается столь же близким к «полностью случайным», как и любое наблюдаемое явление. Другим методом, также генерирующим случайные числа, является радиоактивный распад 9.0047 . Числа, сгенерированные в результате таких непредсказуемых физических процессов, считаются случайными или «случайными с равномерным распределением».

Сегодня случайные числа можно генерировать как с помощью аппаратного, так и программного обеспечения. Генерируемые компьютером случайные числа иногда называют псевдослучайными числами, чтобы отличить их от «настоящих» случайных чисел, генерируемых физическими процессами и оборудованием.

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

Метод линейной конгруэнтности — популярный арифметический метод генерации псевдослучайных чисел.

Для генерации случайных чисел требуются программы и алгоритмы.

Метод линейного сравнения

Метод линейной конгруэнтности, также известный как метод линейной конгруэнтности, для получения случайных чисел представляет собой тип алгоритма генератора псевдослучайных чисел (PRNG) для генерации последовательности случайных чисел в пределах определенного диапазона чисел или распределения.

В этом алгоритме уравнение определяется как X i+1 = aX i + c mod m , где X — последовательность псевдослучайных чисел; m – параметр модуля, m > 0; a (0, m) — множитель; с (0, м) – приращение; X (0, m) — начальное («начальное») значение последовательности; и m , a , c и X 0 должны быть выбраны соответствующим образом, чтобы получить период, почти равный м .

Первым шагом для создания последовательности случайных чисел является выбор X 0 , m , a и c . Затем алгоритм инициализирует необходимое количество генерируемых случайных чисел, а также определяет хранилище для хранения сгенерированной последовательности случайных чисел.

Индекс 0 вектора будет инициализирован начальным значением. Для оставшихся индексов будет применяться метод линейной конгруэнтности для генерации случайных чисел в соответствии с randomNums[i] = ((randomNums[i – 1] * a) + c) % m логика.

Ряд языков использует эту логику для генерации случайных чисел. Результатом этой логики в C++, Java, Python, C# и JavaScript будет: 5 4 1 6 0 3 5 4 1 6.

Генератор случайных чисел

В современных приложениях случайные числа обычно создаются с помощью генератора случайных чисел (ГСЧ), который может быть либо аппаратным устройством, либо программным алгоритмом. Устройство или алгоритм случайным образом генерирует число, взятое из ограниченного или неограниченного распределения.

Обычно существует два типа генераторов случайных чисел: генераторы псевдослучайных чисел и генераторы истинных случайных чисел.

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

PRNG основаны на детерминированных, предсказуемых алгоритмах. Кроме того, можно установить начальное число для воспроизведения сгенерированных случайных чисел. Таким образом, если начальное число известно, числа также можно предсказать. Вот почему ГПСЧ не производят действительно случайных чисел и не так безопасны, как генераторы настоящих случайных чисел.

PRNG используются в компьютерных языках, таких как Python, приложениях, таких как Excel, и в потоковых шифрах, таких как ChaCha. Однако они не подходят для безопасных криптографических реализаций. Для такого использования требуется криптографически безопасный PRNG. Комбинация алгоритмов также может помочь добиться более надежного приближения истинного случайного числа.

Генераторы истинных случайных чисел. Генератор истинных случайных чисел (TRNG), также известный как аппаратный генератор случайных чисел (HRNG), не использует компьютерный алгоритм. Вместо этого он использует внешнюю непредсказуемую физическую переменную, такую ​​как радиоактивный распад изотопов или статические помехи в эфире, для генерации случайных чисел. Точно так же субатомные частицы также являются идеальными переменными непредсказуемой системы, поскольку они демонстрируют действительно и полностью случайное поведение, также известное как чистая случайность .

Поскольку TRNG основан на физических процессах, он учитывает физические атрибуты системы, такие как атмосферные или тепловые условия. Он также может учитывать погрешности измерений. TRNG и HRNG криптографически безопасны и полезны для создания начальных токенов.

Большинство ГСЧ начинаются с начального числа, известного как начальное число . Случайное начальное число или начальное состояние — это просто число или вектор, используемый для инициализации ГСЧ (обычно ГСЧ). Исследование сферы шума алгоритма может выявить «хорошесть» генерируемых им случайных чисел.

Проблемы и риски генерации случайных чисел

Несмотря на наличие физических процессов и компьютерных алгоритмов, создание действительно случайных чисел все еще остается сложной задачей. Кроме того, всегда существует риск того, что полученные случайные числа могут быть скомпрометированы или использованы в личных целях. Такая компрометация может привести к потере конфиденциальности в файловых системах, исходном коде, памяти или сетевых соединениях.

Если утечка происходит на компьютере, подключенном к другим устройствам, утечка может увеличить риск компрометации всех подключенных устройств. Вот почему компьютеры, которые производят случайные числа для конкретных случаев использования, более безопасны, чем компьютеры общего назначения. Примерами таких вариантов использования являются генерация мнемонических фраз и хранение криптовалютных фраз и ключей.

Еще одна проблема заключается в том, что настоящие ГСЧ редко бывают рентабельными. Они также подвержены постепенному снижению и часто полагаются на детерминированные алгоритмы постобработки для дальнейшего улучшения случайности. Тем не менее, использование нескольких случайных процессов может сделать процесс генерации случайных чисел более эффективным. Это можно сделать, комбинируя TRNG и PRNG или используя ансамбль алгоритмов в наборе шифров.

Применение случайных чисел и генераторов случайных чисел

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

  • Криптография . Случайные числа имеют решающее значение для цифрового шифрования паролей, браузеров и других онлайновых и цифровых данных.
  • Криптовалютные кошельки. Сид-фразы, рассчитанные с помощью случайных чисел, используются для стандартных алгоритмов BIP39, которые используются для расчета ключей шифрования для криптовалютных кошельков.
  • Моделирование. Псевдослучайные числовые последовательности используются для проверки и повторного запуска симуляций, таких как симуляции Монте-Карло, для выборки чего-либо для оценки неизвестных отношений и площадей.
  • Машинное обучение (МО). Случайные числа и фреймворки обучения без моделей машинного обучения, такие как рандомизация предметной области (DR), используются во многих реальных приложениях, включая роботы-пылесосы и проект OpenAI по обучению ловкости рук.
  • Случайные числа и PRNG используются во многих аспектах разработки игр, включая игровой процесс и графику.
  • Вычислительная техника . Случайные числа важны для порядковых номеров TCP/IP, одноразовых номеров безопасности транспортного уровня, солей паролей и номеров исходных портов DNS.
  • Научные исследования. Случайные числа используются для создания вероятностных выборок из совокупности и получения статистических выводов из опроса, а также для принятия решения о том, какое обращение следует применять к различным физическим единицам в эксперименте.
  • Математика. ГСЧ защищают от выборочной предвзятости, что делает их полезными для решения математических задач, которые кажутся полностью невероятностными, а также статистических задач, которые трудно решить с помощью прямого анализа.

См. также: аппаратный модуль безопасности , криптосистема , алгоритм Луна .

Последнее обновление: июль 2022 г.


Продолжить чтение О случайных числах

  • Симметричное и асимметричное шифрование: в чем разница?
  • Может ли компьютер генерировать действительно случайное число?
  • Cambridge Quantum предоставляет первые ключи квантового шифрования
  • Советы по подготовке к собеседованию по науке о данных
  • Обновление TLS? Используйте криптографическую энтропию для более безопасных ключей
управление правами на информацию (IRM)

Управление правами на доступ к данным (IRM) — это дисциплина, которая включает в себя управление, контроль и защиту содержимого от нежелательного доступа.

Сеть


  • потоковая передача данных

    Потоковая передача данных — это непрерывная передача данных из одного или нескольких источников с постоянной высокой скоростью для обработки в определенные …


  • граница службы безопасного доступа (SASE)

    Пограничный сервис безопасного доступа, также известный как SASE и произносится как sassy, ​​представляет собой модель облачной архитектуры, которая объединяет сеть и …


  • Протокол конфигурации сети (NETCONF)

    Протокол конфигурации сети (NETCONF) — это протокол сетевого управления инженерной группы Интернета (IETF), который …

Безопасность


  • черный список приложений (занесение приложений в черный список)

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


  • идентификация на основе утверждений

    Идентификация на основе утверждений — это средство аутентификации конечного пользователя, приложения или устройства в другой системе способом, который абстрагирует …


  • Сертифицированный специалист по облачной безопасности (CCSP)

    Certified Cloud Security Professional (CCSP) — это международный консорциум по сертификации безопасности информационных систем, или (ISC)2,…

ИТ-директор


  • Общепринятые принципы ведения учета (Принципы)

    Общепринятые принципы ведения документации — это основа для управления записями таким образом, чтобы поддерживать …


  • система управления обучением (LMS)

    Система управления обучением представляет собой программное приложение или веб-технологию, используемую для планирования, реализации и оценки конкретных …


  • Информационный век

    Информационная эпоха — это идея о том, что доступ к информации и контроль над ней являются определяющими характеристиками нынешней эпохи . ..

HRSoftware


  • аутсорсинг процесса подбора персонала (RPO)

    Аутсорсинг процесса найма (RPO) — это когда работодатель передает ответственность за поиск потенциальных кандидатов на работу …


  • специалист по кадрам (HR)

    Специалист по персоналу — это специалист по кадрам, который выполняет повседневные обязанности по управлению талантами, сотрудникам …


  • жизненный цикл сотрудника

    Жизненный цикл сотрудника — это модель человеческих ресурсов, которая определяет различные этапы, через которые работник проходит в …

Служба поддержки клиентов


  • Платформа Adobe Experience

    Adobe Experience Platform — это набор решений Adobe для управления качеством обслуживания клиентов (CXM).


  • виртуальный помощник (помощник ИИ)

    Виртуальный помощник, также называемый помощником ИИ или цифровым помощником, представляет собой прикладную программу, которая понимает естественные . ..


  • входящий маркетинг

    Входящий маркетинг — это стратегия, направленная на привлечение клиентов или лидов с помощью созданного компанией интернет-контента, тем самым …

как на самом деле работает random()?

спросил

Изменено
2 года, 4 месяца назад

Просмотрено
3к раз

В каждом языке есть функция random() или что-то подобное для генерации псевдослучайного числа. Мне интересно, что происходит внизу, чтобы генерировать эти числа? Я не программирую ничего, что делает эти знания необходимыми, просто пытаюсь удовлетворить собственное любопытство.

  • случайный

4

Вся первая глава оригинальной книги Дональда Кнута
Работа Seminumerical Algorithms посвящена теме генерации случайных чисел. Я действительно не думаю, что ответ SO будет близок к описанию связанных с этим проблем. Читать книгу.

6

Оказалось, что на удивление легко получить псевдослучайные числа, приличные наполовину. На протяжении десятилетий золотым стандартом был удивительно простой алгоритм: сохранить состояние x , умножьте на константу A (32×32 => 64 бита), затем добавьте константу B , затем верните младшие 32 бита, которые также станут новыми x . Если A и B выбраны тщательно, это действительно работает довольно хорошо.

Псевдослучайные числа также должны повторяться, чтобы воспроизвести поведение во время отладки. Таким образом, во время отладки обычно избегают заполнения генератора (инициализации x , скажем, времени суток).

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

5

Страница Википедии является хорошей ссылкой.

Фактически используемый алгоритм будет зависеть от языка и реализации языка.

random() — это так называемый генератор псевдослучайных чисел (PRNG). random() в основном реализован как линейный конгруэнтный генератор. Это функция вида X(n+1)(aXn+c) по модулю m. Xn — последовательность сгенерированных псевдослучайных чисел. Сгенерированная последовательность чисел легко угадывается. Этот алгоритм нельзя использовать в качестве криптографически безопасного ГПСЧ.

Википедия:Линейный конгруэнтный генератор

И взгляните на несгибаемые тесты для PRNG
ГПСЧ Несгибаемые тесты

3

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

Но то, как операционная система создает эти случайные числа, является специализированной областью информатики. См., например, вики-страницу, опубликованную в ответах выше.

2

Возможно, вы захотите изучить семейство случайных устройств, доступных в некоторых Unix-подобных операционных системах, таких как Linux и Mac OSX. Например, в Linux ядро ​​собирает энтропию из различных источников в пул, который затем использует для заполнения своего генератора псевдослучайных чисел. Энтропия может исходить из множества источников, наиболее заметным из которых является дрожание драйвера устройства из-за нажатия клавиш, сетевых событий, активности жесткого диска и (больше всего) движений мыши. Помимо этого, существуют и другие методы сбора энтропии, некоторые из них даже реализованы полностью на аппаратном уровне. Есть два символьных устройства, из которых и в Linux вы можете получить случайные байты, они ведут себя следующим образом:

  • /dev/urandom дает вам постоянный поток байтов, который является очень случайным, но небезопасным с точки зрения криптографии, потому что он повторно использует любую энтропию, доступную в пуле.
  • /dev/random дает вам криптографически безопасные случайные числа, но он не даст вам постоянный поток, поскольку он использует энтропию, доступную в пуле, а затем блокирует, пока собирается больше энтропии.

Обратите внимание, что, хотя Mac OSX использует другой метод для своего PRNG и, следовательно, не блокирует, мои личные тесты (проведенные в колледже) показали, что он немного менее случайный, чем ядро ​​​​Linux. Хотя, конечно, достаточно хорошо.

Итак, в моих проектах, когда мне нужна случайность, я обычно иду на чтение с одного из случайных устройств, по крайней мере, для начального значения алгоритма в моей программе.

1

Генератор псевдослучайных чисел (PRNG), также известный как детерминированный генератор случайных битов (DRBG),1 представляет собой алгоритм генерации последовательности чисел, свойства которой приблизительно соответствуют свойствам последовательностей случайных чисел. Генерируемая ГПСЧ последовательность не является действительно случайной, потому что она полностью определяется начальным значением, называемым начальным числом ГПСЧ (которое может включать действительно случайные значения). Хотя последовательности, которые ближе к действительно случайным, могут быть сгенерированы с помощью аппаратных генераторов случайных чисел, генераторы псевдослучайных чисел важны на практике из-за их скорости генерации чисел и их воспроизводимости.

PRNG занимают центральное место в таких приложениях, как моделирование (например, для метода Монте-Карло), электронные игры (например, для процедурной генерации) и криптография. Криптографические приложения требуют, чтобы выходные данные не были предсказуемы на основе более ранних выходных данных, и необходимы более сложные алгоритмы, которые не наследуют линейность более простых PRNG.

Хорошие статистические свойства являются центральным требованием для вывода PRNG. В общем, требуется тщательный математический анализ, чтобы быть уверенным в том, что PRNG генерирует числа, которые достаточно близки к случайным, чтобы соответствовать предполагаемому использованию. Джон фон Нейман предупредил о неправильном истолковании ГПСЧ как действительно случайного генератора и пошутил, что «любой, кто рассматривает арифметические методы получения случайных цифр, конечно, находится в состоянии греха». 0014

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

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

This entry was posted in Популярное