Генератор случајних бројева

Генеришите случајан број, списак или неколико скупова бројева у било ком опсегу – све генерисано директно у вашем прегледачу уз криптографски безбедну случајност, никада на серверу.

Притисните Генериши за извлачење
Опције

Треба вам брз и поштен начин да добијете случајан број? Овај бесплатан онлајн генератор случајних бројева генерише један број – или читав списак бројева – у било ком опсегу који изаберете, од једноставног опсега од 1 до 10 па све до опсега који сежу у милијарде. Подесите минималну и максималну вредност у пољима „Мин“ и „Макс“, изаберите колико бројева вам треба у пољу „Број“, и притисните „Генериши“. Обе границе су укључене, тако да опсег од 1 до 10 може вратити и 1 и 10.

Сваки резултат се генерише директно у вашем прегледачу преко Web Crypto API (crypto.getRandomValues) – који пружа криптографски снажне случајне вредности из основног извора случајности вашег оперативног система. Ништа се не шаље на сервер, ништа се не бележи, и ми никада не видимо ваше бројеве. Генерисање је тренутно, приватно, и наставља да ради чак и на спорој вези након што се страница учита.

Опције су направљене за стварне ситуације у којима су људима заиста потребни случајни бројеви. Укључите „Без понављања“ да се ниједан број не би појавио два пута – подешавање које вам треба за жребове, извлачења у стилу лутрије, или поделу људи у групе без понављања. Треба вам двадесет добитника међу 500 учесника? Подесите „Мин“ на 1 и „Макс“ на 500, укључите „Без понављања“, подесите „Број“ на 20 и притисните „Генериши“. „Редослед сортирања“ распоређује резултат растуће или опадајуће, а једно дугме копира све резултате одједном. Пребацивање „Формата резултата“ са „Нови ред“ на „Одвојено размацима“ или „Одвојено зарезима“ открива „Број скупова“: неколико независних извлачења одједном – на пример двадесет скупова по 3 броја за двадесет кругова извлачења – док „Дозволи понављања између скупова“ одређује да ли исти број може да се појави у више од једног од њих.

Како се случајност заправо генерише? Ваш прегледач пружа криптографски снажне случајне вредности преко Web Crypto API, а не преко JavaScript PRNG-а попут Math.random(). Када притиснете „Генериши“, страница захтева случајне вредности преко crypto.getRandomValues и користи их да генерише бројеве у оквиру изабраног опсега. Основни извор случајности долази од оперативног система, тако да страница не мора да одржава сопствену почетну вредност (seed) или псеудослучајни низ.

Пресликавање сирове вредности на ваш опсег је место где генератори тихо греше, и заслужује засебан пасус. Узимање остатка дељења вредности величином опсега је најочигледнији приступ, али је пристрасан: осим ако је 2^32 тачно дељиво величином опсега, најнижи бројеви се појављују нешто чешће од осталих. Ова грешка се зове modulo bias, и мерљива је, а не само теоријска. Овај генератор уместо тога одбацује сваку вредност изнад највећег тачног умношка опсега и генерише поново – техника која се зове rejection sampling. То кошта неколико додатних покушаја, али заузврат даје тачну гаранцију: сваки број између „Мин“ и „Макс“ носи потпуно исту вероватноћу, а не скоро исту.

Шта заправо чини број истински случајним? Број је довољно случајан када претходни резултати не откривају ништа о следећем – а у пракси постоје три нивоа тога. Обична псеудослучајна функција попут Math.random() извршава детерминистички алгоритам: свако ко сазна њено унутрашње стање може да репродукује цео низ, што је чини погодном за мешање презентације, а неупотребљивом за све где резултат не сме бити предвидив. Криптографски безбедан генератор (CSPRNG) – ниво који користи овај алат – такође је алгоритам, али је осмишљен тако да ствара непредвидиве вредности користећи безбедан извор системске случајности, и изграђен тако да посматрање његовог излаза не открива ништа о томе шта следи. Физичка случајност, из извора попут атмосферског шума или радиоактивног распада, стоји изнад оба нивоа, иако практична разлика нестаје када је реч о генерисању броја из опсега. Управо зато прегледачи излажу посебан криптографски API уместо да једноставно побољшају Math.random(): њих двоје решавају различите проблеме, а само је један безбедан када резултат некоме нешто значи.

Случајан низ не мора да изгледа случајно људима. Извуците десет бројева између 1 и 10 и редовно ћете видети понављање, скоро-пар попут 7, 7, 8, или кратак низ који сав падне високо – и свака од тих ситуација је сасвим уобичајена. Права случајност је непредвидива, а не равномерно распоређена: сваки број се појављује независно од претходних, ранији бројеви немају апсолутно никакав утицај на касније, и ниједан број никада нема „већу шансу“ да буде извучен од другог. Инстинкт који тврди супротно је коцкарева заблуда, и то је исти инстинкт због којег су људи сами по себи лоши генератори случајних бројева – када нас замоле да смислимо случајан низ, избегавамо понављања и распоређујемо вредности много равномерније него што би то случајност икада учинила. Резултат који изгледа сумњиво уредно носи људски печат; права случајност ствара нагомилавања.

Зашто изабрати овај генератор случајних бројева?

Случајни бројеви се појављују на много више места него што већина људи очекује. Наставници прозивају ученике без фаворизовања. Стримери и маркетиншки тимови извлаче добитнике наградних игара и жребова пред публиком која мора да верује резултату. Играчи замењују изгубљену коцкицу или одлучују ко почиње први, а на турнирима се извлачи почетни редослед. Истраживачи бирају случајан узорак како би њихови налази важили и за људе који нису учествовали. Програмери генеришу тестне податке, подешавају почетну вредност (seed) за симулације и бирају идентификаторе током QA. Заједничка нит је случајан процес избора који се касније може објаснити: пошто извлачење користи криптографску случајност и одвија се у потпуности на вашем уређају, можете да покажете како је резултат генерисан ако неко посумња у њега.

Овај генератор има неколико разумних ограничења која вреди знати. Режим „Без понављања“ не може да извуче више бројева него што опсег садржи: двадесет јединствених вредности између 1 и 10 једноставно не постоји. Извлачења су независна и претходни резултати не утичу на касније, тако да освежавање странице не ресетује никакав циклус – једноставно не постоји циклус у коме бисте се налазили. И иако су бројеви криптографски снажни, извлачење је овде поштен избор, а не предвиђање: званични тиражи лутрије користе сопствену физичку или сертификовану опрему, и ништа израчунато у вашем прегледачу нема никакве везе с њима. У оквиру ових ограничења гаранција је снажна: сваки број у вашем опсегу има потпуно исту шансу, при сваком појединачном извлачењу.

FAQ

Да ли је случајност криптографски безбедна?

Користи Web Crypto API вашег прегледача (crypto.getRandomValues), који црпи случајност из криптографски безбедног извора вашег оперативног система. За разлику од једноставних псеудослучајних функција, његов резултат је осмишљен да буде непредвидив у пракси, а rejection sampling одржава једнаку вероватноћу за сваки број у опсегу уместо да фаворизује најниже вредности.

Како да генеришем случајан број у одређеном опсегу?

Унесите најмању могућу вредност у поље „Мин“ и највећу у поље „Макс“, затим притисните „Генериши“. Обе границе су укључене у резултат, тако да опсег од 1 до 10 може дати и 1 и 10.

Могу ли да генеришем неколико случајних бројева одједном?

Да. Подесите поље „Број“ на потребну количину (до 1000) и генератор ће произвести цео списак једним кликом. Затим можете да копирате све резултате у клипборд дугметом за копирање, или да их сачувате у датотеку.

Могу ли да генеришем више скупова бројева одједном?

Да. Пребаците „Формат резултата“ са „Нови ред“ на „Одвојено размацима“ или „Одвојено зарезима“ како би се појавило поље „Број скупова“. Подесите га на број независних извлачења који вам треба – на пример двадесет скупова по 3 броја за двадесет кругова извлачења – и изаберите да ли дупликати смеју да се понове између различитих скупова.

Могу ли да сортирам генерисане бројеве?

Да. Користите опцију „Редослед сортирања“ да распоредите сваки списак растуће или опадајуће, или је оставите на „Ништа“ да задржите бројеве у редоследу у коме су генерисани.

Како да избегнем дупле бројеве?

Укључите прекидач „Без понављања“. Када је укључен, сваки генерисани број на списку је различит – идеално за жребове, наградне игре, или поделу људи у групе. Имајте на уму да број не сме да пређе величину опсега: не можете да извучете 20 јединствених бројева између 1 и 10.

Зашто се стално понављају исти бројеви?

Зато што се независна извлачења понављају, и тако изгледа случајност. Свако извлачење потпуно занемарује сва претходна извлачења, тако да у опсегу од 1 до 10 исти број који се појави два пута заредом има шансу 1 према 10 сваки пут – уобичајено, а не покварено. Ако вам треба списак без понављања, укључите „Без понављања“; то намерно ограничава извлачење, уместо да поправља неку грешку.

Зашто случајан низ не изгледа случајно?

Зато што је права случајност непредвидива, а не равномерно распоређена. Људи очекују да случајан резултат буде уредно распоређен, па нагомилавања, понављања и кратки низови попут 7, 7, 8 делују као грешке, иако су управо оно што случајност производи. Низ који човеку изгледа уредно обично није био случајан.

Могу ли да верујем случајности генерисаној у прегледачу?

Да, када долази од Web Crypto API, као што је овде случај. crypto.getRandomValues пружа криптографски снажне случајне вредности користећи основну системску случајност оперативног система, а не JavaScript PRNG попут Math.random(). Math.random() је онај коме не треба веровати када је нешто заиста важно: он је детерминистички и никада није осмишљен да буде непредвидив.

Могу ли случајни бројеви да се предвиде или на њих утиче?

Не овде. Вредности долазе из криптографски безбедног генератора вашег оперативног система, тако да посматрање претходних резултата не открива ништа о следећем, а извлачење се у потпуности одвија на вашем уређају – нема сервера у који би неко могао да се умеша, и нема захтева који би неко могао да пресретне. Ни ми не можемо да утичемо на ваше резултате, јер их никада не видимо.

Да ли је погодан за избор добитника наградних игара или жребова?

Да. Доделите сваком учеснику број, генеришите резултат у том опсегу, и побеђује учесник чији се број поклапа. Пошто је извор криптографски безбедан и извлачење се одвија у потпуности на вашем уређају, поступак је лако објаснити и документовати ако учесник посумња у резултат. Ако бирате бројеве за листић лутрије, алат функционише као средство случајног избора, а не као предвиђање: званични тиражи лутрије немају никакве везе с њим.

Да ли освежавање странице мења случајност?

Не, и то чак није ни потребно. Свако извлачење већ тражи нове случајне вредности од оперативног система, тако да су резултати независни без обзира да ли притиснете „Генериши“ десет пута заредом, или поново учитате страницу између сваког притиска. Нема циклуса за рестартовање и нема стања које би застарело – освежавање само брише резултате приказане на екрану.

Да ли је генератор бесплатан, и да ли чувате моје бројеве?

Алат је потпуно бесплатан и не захтева регистрацију. Сви бројеви се генеришу локално у вашем прегледачу и никада не напуштају ваш уређај, тако да не бисмо могли да сачувамо нити видимо ваше резултате, чак и да смо хтели.