Генератор случайных чисел как сделать нужное число. Генератор случайных чисел для лотереи

  • Tutorial

Вы когда-нибудь задумывались, как работает Math.random()? Что такое случайное число и как оно получается? А представьте вопрос на собеседовании - напишите свой генератор случайных чисел в пару строк кода. И так, что же это такое, случайность и возможно ли ее предсказать?

Меня очень увлекают различные IT головоломки и задачки и генератор случайных чисел - одна из таких задачек. Обычно в своем телеграм канале я разбираю всякие головоломки и разные задачи с собеседований. Задача про генератор случайных чисел набрала большую популярность и мне захотелось увековечить ее в недрах одного из авторитетных источников информации - то бишь здесь, на Хабре.

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

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

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

Этот источник используется для накопления энтропии с последующим получением из неё начального значения (initial value, seed), которое необходимо генераторам случайных чисел (ГСЧ) для формирования случайных чисел.

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

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

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

Придумываем свой алгоритм ГПСЧ

Генератор псевдослучайных чисел (ГПСЧ, англ. pseudorandom number generator, PRNG) - алгоритм, порождающий последовательность чисел, элементы которой почти независимы друг от друга и подчиняются заданному распределению (обычно равномерному).
Мы можем взять последовательность каких-то чисел и брать от них модуль числа. Самый простой пример, который приходит в голову. Нам нужно подумать, какую последовательность взять и модуль от чего. Если просто в лоб от 0 до N и модуль 2, то получится генератор 1 и 0:

Function* rand() { const n = 100; const mod = 2; let i = 0; while (true) { yield i % mod; if (i++ > n) i = 0; } } let i = 0; for (let x of rand()) { if (i++ > 100) break; console.log(x); }
Эта функция генерит нам последовательность 01010101010101… и назвать ее даже псевдослучайной никак нельзя. Чтобы генератор был случайным, он должен проходить тест на следующий бит. Но у нас не стоит такой задачи. Тем не менее даже без всяких тестов мы можем предсказать следующую последовательность, значит такой алгоритм в лоб не подходит, но мы в нужном направлении.

А что если взять какую-то известную, но нелинейную последовательность, например число PI. А в качестве значения для модуля будем брать не 2, а что-то другое. Можно даже подумать на тему меняющегося значения модуля. Последовательность цифр в числе Pi считается случайной. Генератор может работать, используя числа Пи, начиная с какой-то неизвестной точки. Пример такого алгоритма, с последовательностью на базе PI и с изменяемым модулем:

Const vector = [...Math.PI.toFixed(48).replace(".","")]; function* rand() { for (let i=3; i<1000; i++) { if (i > 99) i = 2; for (let n=0; n Но в JS число PI можно вывести только до 48 знака и не более. Поэтому предсказать такую последовательность все так же легко и каждый запуск такого генератора будет выдавать всегда одни и те же числа. Но наш генератор уже стал показывать числа от 0 до 9.

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

Мы можем взять не число Pi, а время в числовом представлении и это число рассматривать как последовательность цифр, причем для того, чтобы каждый раз последовательность не повторялась, мы будем считывать ее с конца. Итого наш алгоритм нашего ГПСЧ будет выглядеть так:

Function* rand() { let newNumVector = () => [...(+new Date)+""].reverse(); let vector = newNumVector(); let i=2; while (true) { if (i++ > 99) i = 2; let n=-1; while (++n < vector.length) yield (vector[n] % i); vector = newNumVector(); } } // TEST: let i = 0; for (let x of rand()) { if (i++ > 100) break; console.log(x) }
Вот это уже похоже на генератор псевдослучайных чисел. И тот же Math.random() - это ГПСЧ, про него мы поговорим чуть позже. При этом у нас каждый раз первое число получается разным.

Собственно на этих простых примерах можно понять как работают более сложные генераторы случайных числе. И есть даже готовые алгоритмы. Для примера разберем один из них - это Линейный конгруэнтный ГПСЧ(LCPRNG).

Линейный конгруэнтный ГПСЧ

Линейный конгруэнтный ГПСЧ(LCPRNG) - это распространённый метод для генерации псевдослучайных чисел. Он не обладает криптографической стойкостью. Этот метод заключается в вычислении членов линейной рекуррентной последовательности по модулю некоторого натурального числа m, задаваемой формулой. Получаемая последовательность зависит от выбора стартового числа - т.е. seed. При разных значениях seed получаются различные последовательности случайных чисел. Пример реализации такого алгоритма на JavaScript:

Const a = 45; const c = 21; const m = 67; var seed = 2; const rand = () => seed = (a * seed + c) % m; for(let i=0; i<30; i++) console.log(rand())
Многие языки программирования используют LСPRNG (но не именно такой алгоритм(!)).

Как говорилось выше, такую последовательность можно предсказать. Так зачем нам ГПСЧ? Если говорить про безопасность, то ГПСЧ - это проблема. Если говорить про другие задачи, то эти свойства - могут сыграть в плюс. Например для различных спец эффектов и анимаций графики может понадобиться частый вызов random. И вот тут важны распределение значений и перформанс! Секурные алгоритмы не могут похвастать скоростью работы.

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

Как устроен Math.random()

Метод Math.random() возвращает псевдослучайное число с плавающей запятой из диапазона = crypto.getRandomValues(new Uint8Array(1)); console.log(rvalue)
Но, в отличие от ГПСЧ Math.random(), этот метод очень ресурсоемкий. Дело в том, что данный генератор использует системные вызовы в ОС, чтобы получить доступ к источникам энтропии (мак адрес, цпу, температуре, etc…).

Всем доброго времени суток.

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

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

Генератор названий

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

Генератор паролей

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

!№;%:?*()_+=-~/<>,.{}

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

Генератор чисел

Бывают ситуации, когда требуется получить некоторое количество случайных чисел прямо сейчас. Например, нужно заполнить лотерейный билет «5 из 36», и сделать это хочется, доверившись случаю. Или проверить теорию вероятности - если подбросить монетку 30 раз, может ли выпасть 8 реверсов подряд (в качестве орла/решки вполне подойдут цифры 0 и 1)?

Генератор чисел онлайн - это удобный инструмент, позволяющий получить необходимое количество чисел заданной разрядности и широчайшего диапазона. Нашему генератору случайных чисел можно найти множество применений! Например, можно провести конкурс в ВКонтакте и разыграть там плюшевого медведя в группе байкеров за рипост:)) Также мы будем весьма польщены, если с помощью него Вы решите определить выигрышный номер в какой-либо лотерее или же решите, на какое число ставить в казино. Очень надеемся, что кто-нибудь найдет свое счастливое число онлайн именно у нас!

Диапазон случайных чисел:

Количество:

Исключить повторения?

Сгенерировать числа

Пожалуйста, помогите нам развиваться: Расскажите друзьям про генератор!

Случайное | рандомное число онлайн в 1 клик

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

К примеру, вам необходимо организовать розыгрыш призов среди подписчиков вашей группы. Быстро и честно выбрать призеров и поможет наш генератор случайных чисел онлайн. Вам просто нужно, например, задать нужное количество рандомных чисел (по числу призеров) и максимальный диапазон (по числу участников, если им присвоены номера). Подтасовка в таком случае полностью исключается.

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

Как сгенерировать случайное число: инструкция

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

  1. Выбрать диапазон, в котором вы хотите получить результат. Возможно, вы хотите отсечь числа до 10 или, скажем, 10000;
  2. Исключить повторения – выбрав этот пункт, вы заставите рандомизатор чисел предлагать вам только уникальные комбинации в рамках определенного диапазона;
  3. Выбрать количество чисел – от 1 до 99999;
  4. Нажать кнопку «Сгенерировать числа».

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

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

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

Если речь идет о разовом использовании генератора, можно воспользоваться самым простым вариантом такой программы:

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

Для начала следует познакомиться с основными критериями :

  1. Выбор из списка . Возможность предоставления пользователем собственного списка для генерации, с последующим выбором случайного числа из заданного набора.
  2. Выбор из диапазона . Способность генератора случайных цифр в режиме онлайн бесплатно произвести выборку из конкретного диапазона.
  3. Вывод нескольких чисел . Функция, отвечающая за одновременное предоставление сразу нескольких случайных чисел, если пользователю нужно получить больше, чем одно значение.
  4. Отключение повторности . Способность генератора исключить из последующих генераций число, выпавшее перед этим, чтобы при получении нескольких случайных цифр подряд они не дублировались.
  5. Виджет для сайта . Возможность подключить генератор к своему сайту или странице в социальных сетях, чтобы он всегда был под рукой и доступен для работы.
  6. Ссылка на результат . Возможность получения отдельной ссылки на итог каждой отдельной генерации, что подтверждает достоверность предоставляемой информации при предоставлении результатов конкурсов или розыгрышей.

Прежде чем подготовить данную статью мы проанализировали множество генераторов, которые есть в интернете. И из всех — выбрали 3 лучших:

ТОП-1: генератор чисел «Рандстафф»


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

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

Недостатки : Нет возможности . А сохранить результат генерации можно только на 3 дня (но этого обычно достаточно). Если хотите сохранить результат навсегда — нужно регистрироваться в личном кабинете (стоимость — 300 рублей).

ТОП-2: генератор чисел «Кастлот»


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

Достоинства : Кастлот позволяет пользователю выбрать рандомные числа из заданного диапазона. Это может быть одна или несколько цифр. Вы можете сами выбирать режим работы сервиса с повторностью или без. Удобным преимуществом генератора Кастлот является возможность получить отдельную ссылку на каждый результат. Есть эксклюзивная функция под названием «ещё больше случайности». При её активации процесс генерации не начинается до того момента, пока пользователь не переместит курсор мыши в определенное положение. Кроме того, в ассортименте дополнительных инструментов сервиса имеется виджет для сайта и фирменное приложение ВКонтакте.

Недостатки : Единственным явным недостатком такого генератора является отсутствие возможности выбора из списка.

ТОП-3: генератор «Случайноечисло.рф»


Описание : Сервис «Случайное число» позволяет сгенерировать онлайн значения в диапазоне от 1 до 99999. Дизайн отличается минимализмом, что идет ему на пользу. Никаких отвлекающих факторов. Им одинаково удобно пользоваться на компьютере или смартфоне. Крупные черные цифры на белом фоне отчетливо видны, поэтому даже люди с проблемным зрением не испытают дискомфорта в процессе его использования.

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

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

Заключение

По нашему мнению, самым лучшим и оптимальным сервисом для генерации рандомного числа является . Он обладает всеми функциями, которые есть у остальных генераторов. Единственный его минус — это отсутствие возможности отключить повторность чисел при генерации. Но как мы уже писали выше – данный нюанс не сильно важен для рядового пользователя. Может мы что-то упустили в данной статье? Если это так — пишите в комментарии!

У нас есть последовательность чисел, состоящая из практически независимых элементов, которые подчиняются заданному распределению. Как правило, равномерному распределению.

Сгенерировать случайные числа в Excel можно разными путями и способами. Рассмотрим только лучше из них.

Функция случайного числа в Excel

  1. Функция СЛЧИС возвращает случайное равномерно распределенное вещественное число. Оно будет меньше 1, больше или равно 0.
  2. Функция СЛУЧМЕЖДУ возвращает случайное целое число.

Рассмотрим их использование на примерах.

Выборка случайных чисел с помощью СЛЧИС

Данная функция аргументов не требует (СЛЧИС()).

Чтобы сгенерировать случайное вещественное число в диапазоне от 1 до 5, например, применяем следующую формулу: =СЛЧИС()*(5-1)+1.

Возвращаемое случайное число распределено равномерно на интервале .

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

  1. Щелкаем по ячейке со случайным числом.
  2. В строке формул выделяем формулу.
  3. Нажимаем F9. И ВВОД.

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


Диапазон вертикальных значений – частота. Горизонтальных – «карманы».



Функция СЛУЧМЕЖДУ

Синтаксис функции СЛУЧМЕЖДУ – (нижняя граница; верхняя граница). Первый аргумент должен быть меньше второго. В противном случае функция выдаст ошибку. Предполагается, что границы – целые числа. Дробную часть формула отбрасывает.

Пример использования функции:

Случайные числа с точностью 0,1 и 0,01:

Как сделать генератор случайных чисел в Excel

Сделаем генератор случайных чисел с генерацией значения из определенного диапазона. Используем формулу вида: =ИНДЕКС(A1:A10;ЦЕЛОЕ(СЛЧИС()*10)+1).

Сделаем генератор случайных чисел в диапазоне от 0 до 100 с шагом 10.

Из списка текстовых значений нужно выбрать 2 случайных. С помощью функции СЛЧИС сопоставим текстовые значения в диапазоне А1:А7 со случайными числами.

Воспользуемся функцией ИНДЕКС для выбора двух случайных текстовых значений из исходного списка.

Чтобы выбрать одно случайное значение из списка, применим такую формулу: =ИНДЕКС(A1:A7;СЛУЧМЕЖДУ(1;СЧЁТЗ(A1:A7))).

Генератор случайных чисел нормального распределения

Функции СЛЧИС и СЛУЧМЕЖДУ выдают случайные числа с единым распределением. Любое значение с одинаковой долей вероятности может попасть в нижнюю границу запрашиваемого диапазона и в верхнюю. Получается огромный разброс от целевого значения.

Нормальное распределение подразумевает близкое положение большей части сгенерированных чисел к целевому. Подкорректируем формулу СЛУЧМЕЖДУ и создадим массив данных с нормальным распределением.

Себестоимость товара Х – 100 рублей. Вся произведенная партия подчиняется нормальному распределению. Случайная переменная тоже подчиняется нормальному распределению вероятностей.

При таких условиях среднее значение диапазона – 100 рублей. Сгенерируем массив и построим график с нормальным распределением при стандартном отклонении 1,5 рубля.

Используем функцию: =НОРМОБР(СЛЧИС();100;1,5).

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

Перейдем к построению графика. Сначала нужно составить таблицу с категориями. Для этого разобьем массив на периоды:

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