Приложение рандом как работает

Приложение рандом как работает

Читал про Генератор псевдослучайных чисел.

На самом деле, случайные числа нужны для нескольких целей, и алгоритма, подходящего для всех, нет и быть не может.
Для моделирования может быть важным нормальное распределение выпадающих чисел. Здесь и случайное число по формуле вполне прокатит.
Для игровых целей может быть важна именно высокая случайность числа (то есть, грубо говоря, вероятность выпадения 00000000, 0101010101 и 11111111 одинакова и не зависит от предыдущих выпадений).
Для безопасности обязательна невозможность выведения следующих чисел из предыдущих (или каких-то других условий).

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

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

Обычно и не нужно таких сложностей, поэтому делается проще — ставится програмный генератор псевдослучайных чисел /dev/urandom, который периодически засеивается "абсолютно" случайным числом.
Кому нужно "абсолютно" случайное число может обращаться напрямую к /dev/random. Но он может исчерпаться и перестать выдавать числа.

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

3.2.1
The all-digital Entropy Source (ES), also known as a non-deterministic random bit generator (NRBG), provides a serial stream of entropic data in the form of zeroes and ones.

The ES runs asynchronously on a self-timed circuit and uses thermal noise within the silicon to output a random stream of bits at the rate of 3 GHz.

Рассказываю на пальцах.
Компьютер запомнил число (или кучу чисел), которое называется «случайная затравка» (random seed).
По команде «сгенерируй случайное число» он проводит два алгоритма.

Читайте также:  Как записать файл на яндекс диск

1. Собственно генератор случайных чисел — преобразование seed → seed.
Например: seed := (37·seed + 234) mod 997.
(знаком :=, как в Паскале, я обозначил «переприсвоить»)

2. Интерпретация результатов: seed → Y*.
Например, y = seed/997.
Y — это [0…1), <1…6>или любое другое желаемое множество.
Y* — множество конечных последовательностей: каждый бросок генератора может не дать ни одного числа (и потребуется переброс), одно число, два числа… Например, наиболее известный генератор нормально распределённых чисел каждым броском даёт или ноль чисел (т.е. нужен переброс), или сразу два.

Затравку надо инициализировать чем-то действительно случайным, и для этого используют таймер, счётчик тактов и прочие труднопредсказуемые места. А ещё можно запомнить затравку и снова повторить ту же последовательность чисел (раньше это использовали для повторов и мультиплеера в играх).

Если же нужны настоящие случайные числа, да в большом количестве — это откровенно тяжело. В ход идут…
• таймеры и счётчики команд — ну, это понятно;
• шум в звуковой плате;
• задержки ввода с клавиатуры и мыши;
• аппаратные датчики случайных чисел на диодном шуме, применяемые в некоторых процессорах.
MacOS, например, этим добром не пользуется; и в dev/random, и в dev/urandom идёт один и тот же криптостойкий псевдослучайных генератор Ярроу.

В чем заключается вопрос: Что такое функция Random() и процедура Randomize в языке Pascal. Как это работает?

Сложность : легкая .

И так что такое random и randomize в pascal ?

Randomize — это процедура которая используется в Паскаль для включения генератора случайных чисел. Функция Random определяет диапазон случайных чисел. Процедура Randomize и функция Random очень часто используются для демонстрации работы массивов в Паскаль.

Читайте также:  Как отличить айфон копию от оригинала

Т.е. функция random возвращает нам число.

И тут у нас переменная a может равняться числам от 0 до 9, не 10.

Если мы хотим вывести числа от 0 до 1, то мы пишем следующее :

Т.е. random без всего.

Бывают случаи когда хочется иметь промежуток(диапазон) чисел. Допустим от -23 до 5, как его задать ?

Для начала мы складываем 23 и 5 без учета знаков и прибавляем 1(всегда) , у нас будет 29. Теперь пишем

Но это вернет нам числа от 0 до 28, теперь просто надо вычесть 23, не учитывая знаков. Так для промежутка c отрицательными числами.

С двумя положительными числами всё наоборот, сначала вычитаем из второго первое и прибавляем 1, мы получаем число, затем к нему прибавляем первое число :

Так же есть формула для всех случаев:

Т.е. если нам нужен диапазон отрицательных чисел, например от -5 до -10, то мы пишем:

В основном random и randomize в pascal используются вместе. Если использовать random отдельно, то у нас будут случайные числа постоянно одинаковы.

Допустим у нас есть код :

И при запуске программы у нас выведется допустим 3. И если мы запустим заново, то у нас снова выведется 3 и так при каждом запуске.

Для этого и используется randomize, чтобы числа не повторялись :

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

Больше чем просто рандом

Volodymyr Yahenskyi

  • Развлечения: № 128 в этой категории
    • 4.7, Оценок: 1.2 тыс.
      • Бесплатно
      • Включает встроенные покупки

      Снимки экрана

      Описание

      Нужен счастливый номер или не можете принять решение? Или, может быть, вам нужно выбрать предмет из собственного списка? Попробуйте Random: Генератор Всего!

      Читайте также:  Сложение и вычитание комплексных чисел калькулятор

      Возможности:
      • Числа (от 0 до 999999999)
      • Буквы
      • Кубик (до 4 кубиков за раз)
      • Да или Нет
      • Подбрасывание монеты
      • Игральные карты
      • Элемент с собственного списка
      • Камень-Ножницы-Бумага

      Генерируйте случайное число простым нажатием на кнопку "Randomize" или нажатием на екран Apple Watch. Для тех кто хочет немного разомнуться, есть возможность получение результата встряхиванием устройства.

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

      Преимущества подписки на Random PRO:
      • Синхронизация: Получайте доступ к своим данным со всех устройств.
      • Темы: Изменяйте облик приложения различными темами и фоновыми изображениями.
      • Нет рекламы.

      Если вы решите получить подписку на Random PRO, плата будет снята с вашей учетной записи iTunes. 1 месяц стоит $2,99 , а 1 год — $11,99. Плата за продление будет взиматься с вашего счета iTunes в течение 24 часов до окончания текущего периода. Подписки обновляются автоматически, если не отключить автообновление по крайней мере за 24 часа до их окончания. Для управления подписками или отключения автообновления перейдите после покупки в настройки учетной записи iTunes. Любая неиспользованная часть бесплатного пробного периода будет аннулирована, если вы приобретете подписку на Random PRO до истечения срока действия пробной версии.

      Ссылка на основную публикацию
      Почему телефон ночью быстро разряжается
      Если телефон стал быстро разряжаться, это еще не значит, что виновата батарея. В 70% случаев пользователь сам настроил устройство таким...
      Почему имя пользователя недоступно в инстаграме
      Как быть, если такое имя пользователя Instagram уже занято, но соответствующий ему аккаунт кажется неактивным? Если имя пользователя, которое вы...
      Почему индукционная плита щелкает
      Если индукционная плита щелкает при работе, рекомендуется ознакомиться с особенностями работы техники. При уверенности, что устройство вышло из строя, не...
      Почему телефон самостоятельно перезагружается
      Постоянная и не запланированная перезагрузка смартфона на Android – раздражающая ошибка. Она порождает плохое настроение и желание расстаться с гаджетом....
      Adblock detector