Случайни числа онлайн за състезанието. Генератор на произволни числа в Excel във функции и анализ на данни

  • урок

Чудили ли сте се как работи Math.random()? Какво е произволно число и как се получава? И задайте въпрос на интервюто - напишете вашия генератор произволни числав няколко реда код. И така, какво е това, инцидент и възможно ли е да се предвиди?

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

Този материал ще бъде полезен за всички онези разработчици на front-end и разработчици на Node.js, които са в челните редици на технологиите и искат да влязат в блокчейн проекта/стартирането, където дори на front-end разработчиците се задават въпроси относно сигурността и криптографията, на поне на основно ниво.

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

За да получим нещо произволно, се нуждаем от източник на ентропия, източник на някакъв вид хаос, от който ще използваме, за да генерираме случайност.

Този източник се използва за натрупване на ентропия, последвано от получаване на първоначалната стойност (първоначална стойност, начална стойност), която е необходима на генераторите на произволни числа (RNG) за генериране на произволни числа.

Генераторът на псевдослучайни числа използва единично начално начало, следователно неговата псевдослучайност, докато генераторът на случайни числа винаги генерира произволно число, започвайки с висококачествена произволна стойност, която се взема от различни източнициентропия.

Ентропията - е мярка за разстройство. Ентропията на информацията е мярка за несигурността или непредсказуемостта на информацията.
Оказва се, че за да създадем псевдослучайна последователност, се нуждаем от алгоритъм, който ще генерира някаква последователност на базата на определена формула. Но такава последователност може да се предвиди. Нека обаче си представим как бихме могли да напишем собствен генератор на произволни числа, ако нямахме Math.random()

PRNG има някакъв алгоритъм, който може да бъде възпроизведен.
RNG - извлича числата изцяло от всеки шум, способността да се изчисли, който клони към нула. В същото време RNG има определени алгоритми за изравняване на разпределението.

Изобретяването на нашия собствен PRNG алгоритъм

Генератор на псевдослучайни числа (PRNG) е алгоритъм, който генерира поредица от числа, чиито елементи са почти независими един от друг и се подчиняват на дадено разпределение (обикновено равномерно).
Можем да вземем поредица от някои числа и да вземем модула на числото от тях. Най-простият пример, който идва на ум. Трябва да помислим каква последователност да вземем и модула от какво. Ако просто директно от 0 до N и модул 2, тогава получавате генератор на 1 и 0:

Функция* rand() ( const n = 100; const mod = 2; нека i = 0; докато (true) ( ​​добив i % mod; ако (i++ > n) i = 0; ) ) нека i = 0; за (нека x от rand()) ( ако (i++ > 100) прекъсва; console.log(x); )
Тази функция генерира за нас последователността 01010101010101 ... и тя дори не може да бъде наречена псевдослучайна. За да бъде генераторът произволен, той трябва да премине теста за следващия бит. Но ние нямаме такава задача. Въпреки това, дори без никакви тестове, можем да предвидим следващата последователност, което означава, че такъв алгоритъм не е подходящ в челото, но сме в правилната посока.

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

Const vector = [...Math.PI.toFixed(48).replace(".","")]; функция* rand() ( за (нека i=3; i<1000; i++) { if (i >99) i = 2; за (нека n=0; n Но в JS числото PI може да се показва само до 48 знака и не повече. Следователно все още е лесно да се предвиди такава последователност и всяко стартиране на такъв генератор винаги ще произвежда едни и същи числа. Но нашият генератор вече започна да показва числа от 0 до 9.

Имаме генератор на числа от 0 до 9, но разпределението е много неравномерно и ще генерира една и съща последователност всеки път.

Можем да вземем не числото Pi, а времето в числово представяне и да разгледаме това число като поредица от цифри и за да предотвратим повторението на последователността всеки път, ще го четем от края. Като цяло нашият алгоритъм за нашия PRNG ще изглежда така:

Функция* rand() (нека newNumVector = () => [...(+нова дата)+""].reverse(); нека вектор = newNumVector(); нека i=2; while (true) ( ​​. ако ( i++ > 99) i = 2; нека n=-1; докато (++n< vector.length) yield (vector[n] % i); vector = newNumVector(); } } // TEST: let i = 0; for (let x of rand()) { if (i++ >100) прекъсване; console.log(x) )
Сега изглежда като генератор на псевдослучайни числа. И същият Math.random() - е PRNG, ще говорим за него малко по-късно. Освен това всеки път първото число е различно.

Всъщност на тези прости примериможете да разберете как работят по-сложните генератори на произволни числа.И дори има готови алгоритми. Например, нека анализираме един от тях - това е Linear Congruent PRNG (LCPRNG).

Линеен конгруентен PRNG

Линеен конгруентен PRNG (LCPRNG) -  е често срещан метод за генериране на псевдослучайни числа. Той няма криптографска сила. Този метод се състои в изчисляване на членовете на линейна повтаряща се последователност по модул някои естествено число m се дава по формулата. Получената последователност зависи от избора на начално число - т.е. семена. В различни значения seed дава различни поредици от произволни числа. Пример за реализация на такъв алгоритъм в JavaScript:

Const a = 45; const c = 21; const m = 67; варово семе = 2; const rand = () => семена = (a * семена + c) % m; for(нека i=0; i<30; i++) console.log(rand())
Много езици за програмиране използват LCPRNG (но не само такъв алгоритъм (!).

Както бе споменато по-горе, такава последователност може да бъде предвидена. И така, защо се нуждаем от PRNG? Ако говорим за сигурност, тогава PRNG е проблем. Ако говорим за други задачи, тогава тези свойства  -  могат да играят плюс. Например, за различни специални ефекти и графични анимации, може да се наложи често да извиквате random. И тук разпределението на стойностите и производителността са важни! Алгоритмите за сигурност не могат да се похвалят с бързина.

Друго свойство - възпроизводимост. Някои реализации ви позволяват да зададете начално число, което е много полезно, ако трябва да се повтори последователност. Възпроизвеждането е необходимо при тестове, например. И има много други неща, които не изискват защитен RNG.

Как работи Math.random().

Методът Math.random() връща псевдослучайно число с плаваща запетая от диапазона = crypto.getRandomValues(new Uint8Array(1)); конзолен дневник (rvalue)
Но за разлика от PRNG Math.random(), този метод е много ресурсоемък. Факт е, че този генератор използва системни повиквания в ОС за достъп до източници на ентропия (мак адрес, процесор, температура и т.н. ...).

Имаме последователност от числа, състояща се от почти независими елементи, които се подчиняват на дадено разпределение. Обикновено равномерно разпределени.

Можете да генерирате произволни числа в Excel по различни начини и начини. Нека да разгледаме най-добрите от тях.

Функция за произволно число в Excel

  1. Функцията RAND връща произволно, равномерно разпределено реално число. Ще бъде по-малко от 1, по-голямо или равно на 0.
  2. Функцията RANDBETWEEN връща произволно цяло число.

Нека разгледаме използването им с примери.

Избиране на произволни числа с RAND

Тази функция не изисква никакви аргументи (RAND()).

За да генерирате произволно реално число между 1 и 5, например, използвайте следната формула: =RAND()*(5-1)+1.

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

Всеки път, когато работният лист се изчислява или стойността в която и да е клетка в работния лист се промени, се връща ново произволно число. Ако искате да запазите генерираната съвкупност, можете да замените формулата с нейната стойност.

  1. Щракваме върху клетка с произволно число.
  2. Маркирайте формулата в лентата с формули.
  3. Натиснете F9. И Влезте.

Нека проверим равномерността на разпределението на произволните числа от първата извадка с помощта на хистограмата на разпределението.


Диапазонът на вертикалните стойности е честотата. Хоризонтални - "джобове".



RANDBETWEEN функция

Синтаксисът на функцията RANDBETWEEN е (долна граница; горна граница). Първият аргумент трябва да е по-малък от втория. В противен случай функцията ще изведе грешка. Предполага се, че границите са цели числа. Формулата отхвърля дробната част.

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

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

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

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

Нека направим генератор на произволни числа в диапазона от 0 до 100 със стъпка 10.

От списъка с текстови стойности трябва да изберете 2 произволни. Използвайки функцията RAND, ние сравняваме текстови стойности в диапазона A1:A7 с произволни числа.

Нека използваме функцията INDEX, за да изберем две произволни текстови стойности от оригиналния списък.

За да изберете една произволна стойност от списъка, приложете следната формула: =ИНДЕКС(A1:A7,RANDBETWEEN(1,COUNT(A1:A7))).

Генератор на произволни числа за нормално разпределение

Функциите RAND и RANDBETWEEN произвеждат произволни числа с едно разпределение. Всяка стойност със същата вероятност може да попадне в долната граница на искания диапазон и в горната. Оказва се огромен спред от целевата стойност.

Нормалното разпределение означава, че повечето от генерираните числа са близо до целта. Нека коригираме формулата RANDBETWEEN и създадем масив от данни с нормално разпределение.

Цената на стоките X е 100 рубли. Цялата произведена партида подлежи на нормално разпределение. Случайната променлива също следва нормално разпределение на вероятностите.

При такива условия средната стойност на диапазона е 100 рубли. Нека генерираме масив и да изградим графика с нормално разпределение със стандартно отклонение от 1,5 рубли.

Използваме функцията: =NORMINV(RAND();100;1.5).

Excel изчислява кои стойности са в диапазона на вероятностите. Тъй като вероятността за производство на продукт с цена от 100 рубли е максимална, формулата показва стойности, близки до 100 по-често от останалите.

Да преминем към начертаването. Първо трябва да създадете таблица с категории. За да направите това, разделяме масива на периоди:

Въз основа на получените данни можем да формираме диаграма с нормално разпределение. Стойната ос е броят на променливите в интервала, оста на категориите са периодите.

Различни лотарии, тегления и т.н. често се провеждат в много групи или публики в социалните мрежи, Instagram и т.н., и се използват от собствениците на акаунти за привличане на нова аудитория в общността.

Резултатът от такива тегления често зависи от късмета на потребителя, тъй като получателят на наградата се определя на случаен принцип.

За такова определяне организаторите на теглене почти винаги използват онлайн генератор на произволни числа или предварително инсталиран такъв, който се разпространява безплатно.

Избор

Доста често може да е трудно да изберете такъв генератор, тъй като тяхната функционалност е доста различна - за някои е значително ограничена, за други е доста широка.

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

Много, например, са обвързани със своята функционалност с определена социална мрежа (например, много генераторни приложения във VKontakte работят само с връзки на тази социална мрежа).

Най-простите генератори просто генерират на случаен принцип число в даден диапазон.

Това е удобно, защото не свързва резултата с конкретна публикация, което означава, че те могат да се използват за тегления извън социалната мрежа и в различни други ситуации.

Те всъщност нямат друга употреба.

<Рис. 1 Генератор>

Съвет!При избора на най-подходящия генератор е важно да се вземе предвид целта, за която ще се използва.

Спецификации

За най-бързия процес на избор на оптимална онлайн услуга за генериране на произволни числа, таблицата по-долу показва основните технически характеристики и функционалност на подобни приложения.

Таблица 1. Характеристики на функционирането на онлайн приложения за генериране на произволно число
име Социална мрежа Множество резултати Изберете от списък с числа Онлайн джаджа за уебсайт Изберете от диапазон Изключете повторенията
суровини да да Не да Не
Cast Lots Официален сайт или VKontakte Не Не да да да
Случайно число Официален сайт Не Не Не да да
Рандомус Официален сайт да Не Не да Не
произволни числа Официален сайт да Не Не Не Не

Всички приложения, разгледани в таблицата, са описани по-подробно по-долу.

<Рис. 2 Случайные числа>

суровини

<Рис. 3 RandStuff>

Можете да използвате това приложение онлайн, като използвате връзката към официалния му уебсайт http://randstuff.ru/number/.

Това е прост генератор на произволни числа, характеризира се с бърза и стабилна работа.

Той се прилага успешно както във формат на отделно независимо приложение на официалния уебсайт, така и като приложение в социалната мрежа VKontakte.

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

Професионалисти:

  • Стабилна и бърза работа;
  • Липса на директна връзка към социалната мрежа;
  • Можете да изберете едно или повече номера;
  • Можете да избирате само от дадените числа.

минуси:

  • Невъзможността за провеждане на теглене във VKontakte (това изисква отделно приложение);
  • Приложенията за VKontakte не се изпълняват във всички браузъри;
  • Резултатът понякога изглежда предсказуем, тъй като се използва само един алгоритъм за изчисление.

Потребителските отзиви за това приложение са както следва: „Определяме победителите в групите на VKontakte чрез тази услуга. Благодаря ви“, „Вие сте най-добрият“, „Използвам само тази услуга“.

Cast Lots

<Рис. 4 Cast Lots>

Това приложение е прост генератор на функции, реализиран на официалния уебсайт под формата на приложение VKontakte.

Има и джаджа за генератор, която да вградите във вашия сайт.

Основната разлика от предишното описано приложение е, че това ви позволява да деактивирате повторението на резултата.

Тоест, при провеждане на няколко поколения подред в една сесия, числото няма да се повтори.

  • Наличие на джаджа за вмъкване в уебсайт или блог;
  • Възможност за деактивиране на повторението на резултата;
  • Наличието на функцията "още повече случайност", след активирането на която алгоритъмът за избор се променя.

Отрицателно:

  • Невъзможността за определяне на няколко резултата наведнъж;
  • Невъзможност за избор от конкретен списък с числа;
  • За да изберете победител публично, трябва да използвате отделна джаджа на VKontakte.

Отзивите на потребителите са следните: „Работи стабилно, доста е удобно за използване“, „Удобна функционалност“, „Използвам само тази услуга“.

Случайно число

<Рис. 5 Случайное число>

Тази услуга се намира на http://random number.rf/.

Прост генератор с минимум функции и допълнителни функции.

Може произволно да генерира числа в рамките на даден диапазон (максимум от 1 до 99999).

Сайтът няма графичен дизайн и затова страницата е лесна за зареждане.

Резултатът може да бъде копиран или изтеглен с натискане на бутон.

Отрицателно:

  • Няма джаджа за VKontakte;
  • Няма възможност за провеждане на тираж;
  • Няма начин да вмъкнете резултата в блог или уебсайт.

Ето какво казват потребителите за тази услуга: „Добър генератор, но недостатъчно функции“, „Много малко функции“, „Подходящ за бързо генериране на номер без ненужни настройки“.

Рандомус

<Рис. 6 Рандомус>

Можете да използвате този генератор на произволни числа на http://randomus.ru/.

Друго просто, но функционален генератор на случайни числа.

Услугата има достатъчна функционалност за определяне на произволни числа, но не е подходяща за провеждане на тегления и други по-сложни процеси.

Отрицателно:

  • Невъзможността за провеждане на тегления въз основа на пост репости и др.
  • Няма приложение за VKontakte или джаджа за сайта;
  • Не е възможно да деактивирате повтарящите се резултати.

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

Популярен е и в други области. Също така имаме или пароли и номера.

Нашият онлайн генератор на произволни числа.

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

Например, имате група Vkontakte. В група теглите 5 награди, сред броя на участниците, които повторно публикуват записа. С помощта на специално приложение получихме списък с участници. На всеки е присвоен сериен номер за онлайн номера.

Сега отиваме в нашия онлайн генератор и посочваме диапазона от числа (брой участници). Например, молим да са необходими 5 числа онлайн, тъй като имаме 5 награди. Сега натискаме бутона за генериране. След това получаваме 5 произволни числа онлайн, в диапазона от 1 до 112 включително. Генерираните 5 числа онлайн ще отговарят на поредния номер на петимата участници, станали победители в тегленето. Всичко е просто и удобно.

Друг плюс на генератора на случайни числа е, че всички онлайн числа се генерират на случаен принцип. Тоест, не е възможно да се повлияе на него или да се изчисли какъв номер ще бъде следващият. Това, което го прави честен и надежден, а администрацията, която тегли награди с помощта на нашия безплатен генератор, е честна и порядъчна в лицето на състезателите. И ако се съмнявате в решение, тогава можете да използвате нашия

Защо генераторът на произволни числа е най-добрият?

Факт е, че генератор на числа онлайндостъпно на всяко устройство и винаги онлайн. Можете съвсем честно да генерирате произволно число за всяка ваша идея. И същото за проекта за използване генератор на случайни числана линия. Особено ако трябва да определите победителя в играта или за различен номер онлайн. Факт е, че генератор на случайни числагенерира произволни числа без алгоритми. По принцип е същото за числата.

Генератор на произволни числа онлайн безплатно!

Генератор на произволни числа онлайн безплатно за всички. Не е необходимо да изтегляте или купувате никакви генератор на случайни числаонлайн за теглене. Просто трябва да отидете на нашия уебсайт и да получите на случаен принцип желания резултат. Имаме не само генератор на случайни числано също така е необходимо от мнозина, които определено ще ви помогнат да спечелите от лотарията. Истинският онлайн генератор на произволни числа за лотарии е абсолютен случай. Което е в състояние да ви предостави нашия сайт.

Случайно число онлайн

Ако търсите произволно число онлайн, ние създадохме този ресурс точно за вас. Ние непрекъснато подобряваме нашите алгоритми. Тук ставаш истински генератор на случайни числа.Той ще осигури всяка нужда като генератор на случаен принцип, от който се нуждаете, напълно безплатно и по всяко време. Генерирайте произволни числа онлайн с нас. Винаги се уверете, че всяко генерирано число е напълно произволно.

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

Нашият генератор на произволни числа избира числата напълно произволно. Няма значение кой ден или час имате на компютъра си. Това е истински сляп избор. Генераторът на случаен принцип просто разбърква всички числа произволно. И след това произволно избира от тях броя на произволните числа, които сте посочили. Понякога числата могат да се повтарят, което доказва пълната случайност на генератора на случайни числа.

Случайно онлайн

Random е най-сигурният вариант за теглене. Онлайн генераторът наистина е случаен избор. Вие сте защитени от всякакво влияние върху избора на произволно число. Заснемане на процеса на случаен онлайн избор на победителя на видео. Това е всичко, от което се нуждаете. Играйте честно онлайн шеги с нашия онлайн генератор на числа. Получавате победители и доволни играчи. И ние се радваме, че успяхме да ви зарадваме с нашия генератор на случаен принцип.