Генератор випадкових чисел. Генератор випадкових чисел онлайн Генератор випадкових чисел від 0 до 1


Ви коли-небудь думали, як працює Math.random()? Що таке випадкове число і як воно виходить? А уявіть питання на співбесіді - напишіть свій генератор випадкових чисел в пару рядків коду. І так, що це таке, випадковість і чи можливо її передбачити?

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

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

Содержание статьи развернуть / свернуть
  1. Генератор псевдовипадкових чисел та генератор випадкових чисел
  2. Вигадуємо свій алгоритм ДПСЛ
  3. Лінійний конгруентний ГПСЧ
  4. Як влаштований Math.random()
  5. Генератор чисел онлайн (рандомайзер)
  6. Як згенерувати випадкове число: інструкція
  7. Функція випадкового числа в Excel
  8. Вибірка випадкових чисел за допомогою СЛЧИС
  9. Функція ВИПАДМІЖ
  10. Як зробити генератор випадкових чисел в Excel
  11. Генератор випадкових чисел нормального розподілу

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

Для того, щоб отримати щось випадкове, нам потрібне джерело ентропії, джерело якогось хаосу з якого ми будемо використовувати для генерації випадковості.

Це джерело використовується для накопичення ентропії з подальшим отриманням початкової значення (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 ...).

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

Генератор чисел онлайн (рандомайзер)

У генератор випадкових чисел за замовчуванням вводиться 1 число. Якщо змінити налаштування програми, можна одночасно генерувати до 250 випадкових цифр. Для початку необхідно встановити діапазон. Максимальне значення числа становить 9999999999. Генератор випадкових чисел дозволяє впорядкувати числа зі спадання, зростання або ж у випадковому порядку.

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

Числа оточують нас із самого народження і відіграють важливу роль у житті. У багатьох людей сама робота пов'язана з числами, хтось покладається на удачу, заповнюючи числами лотерейні квитки, а хтось надає їм зовсім містичного значення. Так чи інакше, іноді нам не обійтися без того, щоб скористатися такою програмою, як генератор рандомних чисел.

Наприклад, необхідно організувати розіграш призів серед передплатників вашої групи. Швидко та чесно вибрати призерів та допоможе наш генератор випадкових чисел онлайн. Вам просто потрібно, наприклад, задати потрібну кількість рандомних чисел (за кількістю призерів) та максимальний діапазон (за кількістю учасників, якщо їм надано номери). Підтасування у такому випадку повністю виключається.

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

Як згенерувати випадкове число: інструкція

Програма випадкових чиселпрацює дуже просто. Вам навіть не потрібно завантажувати її на комп'ютер - все робиться у вікні браузера, де ця сторінка відкрита. Генерація випадкових чисел відбувається відповідно до заданої кількості чисел та їх діапазону - від 0 до 999999999.

Щоб згенерувати кількість онлайн, необхідно:

  1. Виберіть діапазон, в якому ви хочете отримати результат. Можливо, ви хочете відсікти числа до 10 або, скажімо, 10000;
  2. Виключити повторення – вибравши цей пункт, ви змусите **рандомізатор чисел** пропонувати вам лише унікальні комбінації у межах певного діапазону;
  3. Вибрати кількість чисел – від 1 до 99 999;
  4. Натиснути кнопку "Сгенерувати числа".

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

Тепер ви можете скористатися готовими числами так, як вам це потрібно. З поля з числами можна скопіювати результат для публікації в групі або надсилання поштою. А щоб результат не викликав жодного сумніву, зробіть скріншот цієї сторінки, на якій будуть добре видно параметри рандомізатора чисел та результати роботи програми. Змінити числа у полі неможливо, тому можливість підтасовування виключається. Сподіваємося, вам допоміг наш сайт та генератор випадкових чисел.

Ми маємо послідовність чисел, що складається з практично незалежних елементів, які підпорядковуються заданому розподілу. Як правило, рівномірний розподіл.

Згенерувати випадкові числа в Excel можна різними шляхами та способами. Розглянемо лише найкраще з них.

Функція випадкового числа в Excel

  1. Функція СЛЧИС повертає випадкове рівномірно розподілене речове число. Воно буде менше 1, більше або 0.
  2. Функція РОЗМІЖ повертає випадкове ціле число.

Розглянемо їх використання на прикладах.

Вибірка випадкових чисел за допомогою СЛЧИС

Ця функція аргументів не вимагає (СЛЧИС()).

Щоб згенерувати випадкове речове число в діапазоні від 1 до 5, наприклад, застосовуємо наступну формулу: =СЛЧИС()*(5-1)+1.

Поворотне випадкове число розподілено рівномірно на інтервалі.

При кожному обчисленні аркуша або зміні значення у будь-якій комірці аркуша повертається нове випадкове число. Якщо потрібно зберегти згенеровану сукупність, можна замінити формулу її значення.

  1. Клацаємо по комірці з випадковим числом.
  2. У рядку формул виділяємо формулу.
  3. Натискаємо F9. І ВВЕДЕННЯ.

Перевіримо рівномірність розподілу випадкових чисел із першої вибірки за допомогою гістограми розподілу.


Генератор випадкових чисел.  Генератор випадкових чисел онлайн Генератор випадкових чисел від 0 до 1

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



Функція ВИПАДМІЖ

Синтаксис функції РАЗМІЖ – (нижня межа; верхня межа). Перший аргумент має бути меншим за другий. В іншому випадку функція видасть помилку. Передбачається, що межі – цілі числа. Дробну частину формула відкидає.

Приклад використання функції:

Генератор випадкових чисел.  Генератор випадкових чисел онлайн Генератор випадкових чисел від 0 до 1

Випадкові числа з точністю 0,1 та 0,01:

Генератор випадкових чисел.  Генератор випадкових чисел онлайн Генератор випадкових чисел від 0 до 1

Як зробити генератор випадкових чисел в Excel

Зробимо генератор випадкових чисел з генерацією значення певного діапазону. Використовуємо формулу виду: = ІНДЕКС (A1: A10; ЦІЛО (СЛЧИС () * 10) +1).

Генератор випадкових чисел.  Генератор випадкових чисел онлайн Генератор випадкових чисел від 0 до 1

Зробимо генератор випадкових чисел у діапазоні від 0 до 100 з кроком 10.

Генератор випадкових чисел.  Генератор випадкових чисел онлайн Генератор випадкових чисел від 0 до 1

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

Генератор випадкових чисел.  Генератор випадкових чисел онлайн Генератор випадкових чисел від 0 до 1

Скористайтеся функцією ІНДЕКС для вибору двох випадкових текстових значень із вихідного списку.

Генератор випадкових чисел.  Генератор випадкових чисел онлайн Генератор випадкових чисел від 0 до 1

Щоб вибрати одне випадкове значення зі списку, застосуємо таку формулу: = ІНДЕКС (A1: A7; ВИПАД МІЖ (1; РАХУНОК (A1: A7))).

Генератор випадкових чисел.  Генератор випадкових чисел онлайн Генератор випадкових чисел від 0 до 1

Генератор випадкових чисел нормального розподілу

Функції СЛЧИС і СЛУЧМІЖ видають випадкові числа з єдиним розподілом. Будь-яке значення з однаковою часткою ймовірності може потрапити в нижню межу діапазону запиту і у верхню. Виходить величезний розкид від цільового значення.

Нормальний розподіл має на увазі близьке положення більшої частини згенерованих чисел до цільового. Підкоригуємо формулу ВИПАДМІЖ і створимо масив даних із нормальним розподілом.

Собівартість товару Х - 100 рублів. Вся партія підкоряється нормальному розподілу. Випадкова змінна теж підпорядковується нормальному розподілу ймовірностей.

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

Використовуємо функцію: =НОРМОБР(СЛЧИС();100;1,5).

Програма Excel вирішила, які значення знаходяться в діапазоні ймовірностей. Оскільки можливість виробництва товару з собівартістю 100 рублів максимальна, формула показує значення близькі до 100 частіше, ніж інші.

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

Генератор випадкових чисел.  Генератор випадкових чисел онлайн Генератор випадкових чисел від 0 до 1Генератор випадкових чисел.  Генератор випадкових чисел онлайн Генератор випадкових чисел від 0 до 1

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

Вибір редакції
«Кому живеться весело, вільно на Русі?» Російські школярі намагаються знайти відповідь на це питання разом із . Поему письменника про...

Конкурсний твір учня 6 класу Андрія Бочарова (м. Воронеж).

У романі "Батьки та діти" дійові особи дуже різноманітні та по-своєму цікаві. У цій статті наведено коротку характеристику...

«Ходіння по муках» є трилогією романів відомого радянського письменника А. Толстого. Перший роман «Сестри» був написаний у...
А. Н. Островський описав досить точно картину байдужості та безсердечності тих часів. Сьогодні нами буде розглянуто характеристику героїв.
Тургенєв Іван Сергійович Псевдоніми: В; -е-; І.С.Т.; І.Т.; Л.; Недобобов, Єремія; Т.; Т…; Т. Л.; Т……в; *** Дата народження:...
Іван Сергійович Тургенєв, у майбутньому всесвітньо відомий письменник, народився 9 листопада 1818 року. Місце народження - місто Орел, батьки -...
Євген Васильович Базаров - головний герой роману, син полкового лікаря, студент-медик, приятель Аркадія Кірсанова. Базарів є...
Поміщик Степан Плюшкін – жорстокий кріпосник, скупий, підозрілий, недовірливий до всіх – не бажає бачити вас у...