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

Генерирайте случайно число, списък или няколко набора от числа във всеки диапазон по ваш избор — всичко се генерира директно във вашия браузър с криптографски сигурна случайност, без резултатите да се изпращат на сървър.

Натиснете Генерирай за теглене
Опции

Нуждаете се от бърз и честен начин да получите случайно число? Този безплатен онлайн генератор на случайни числа генерира едно число — или цял списък с числа — в диапазон по ваш избор, от простия диапазон от 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, или кратка серия от високи стойности — и всичко това е напълно нормално. Истинската случайност е непредвидима, а не равномерно разпределена: всяко теглене е независимо, предишните числа нямат абсолютно никакво влияние върху следващите, и никое число никога не „дължи“ да излезе. Инстинктът, който твърди обратното, е заблудата на комарджията, и той е същият инстинкт, който прави хората сами по себе си лоши генератори на случайни числа — помолени да измислим случайна последователност, ние избягваме повторенията и разпределяме стойностите много по-равномерно, отколкото случайността някога би го направила. Резултат, който изглежда подозрително подреден, е отпечатъкът на човек; истинската случайност създава струпвания.

Защо да изберете този генератор на случайни числа?

Случайните числа се използват на много повече места, отколкото повечето хора очакват. Учителите изпитват ученици, без да имат любимци. Стриймъри и маркетолози теглят жребий за победители в томболи и подаръчни кампании пред публика, която трябва да повярва на резултата. Играчите заменят изгубен зар или решават кой започва пръв, а на турнирите се тегли начален ред. Изследователите избират случайна извадка, за да могат резултатите им да важат и за хората, които не са участвали в изследването. Разработчиците генерират тестови данни, задават начална стойност (seed) на симулации и избират идентификатори по време на QA. Общото между всички е случаен процес на подбор, който може да бъде обяснен впоследствие: тъй като тегленето използва криптографска случайност и се случва изцяло на вашето устройство, можете да покажете как е получен резултатът, ако някой го постави под въпрос.

Този генератор има няколко важни ограничения, които си струва да знаете. Режимът „Без повторения“ не може да изтегли повече числа, отколкото съдържа диапазонът: двадесет уникални стойности между 1 и 10 просто не съществуват. Тегленията са независими и предишните резултати не влияят на следващите, така че презареждането на страницата не нулира никакъв цикъл — просто няма цикъл, в който да се намирате. И макар числата да са криптографски сигурни, тегленето тук е честен избор, а не предсказание: официалните тиражи на лотарии използват собствено физическо или сертифицирано оборудване, и нищо изчислено във вашия браузър няма никаква връзка с тях. В рамките на тези ограничения гаранцията е силна: всяко число във вашия диапазон има точно еднаква вероятност при всяко отделно теглене.

FAQ

Случайността криптографски сигурна ли е?

Използва се Web Crypto API (crypto.getRandomValues) на вашия браузър, който извлича случайност от криптографски сигурния източник на вашата операционна система. За разлика от простите псевдослучайни функции, резултатът му е проектиран да бъде непредвидим на практика, а rejection sampling гарантира, че всяко число в диапазона е еднакво вероятно, вместо да облагодетелства най-ниските стойности.

Как да генерирам случайно число в определен диапазон?

Въведете най-малката възможна стойност в полето „Мин“ и най-голямата в полето „Макс“, след което натиснете „Генерирай“. И двете граници са включени в резултата, така че диапазон от 1 до 10 може да върне както 1, така и 10.

Мога ли да генерирам няколко случайни числа наведнъж?

Да. Задайте полето „Брой“ на нужното количество (до 1000) и генераторът ще произведе целия списък с едно кликване. След това можете да копирате всички резултати в клипборда с бутона за копиране или да ги запазите във файл.

Мога ли да генерирам няколко набора от числа наведнъж?

Да. Превключете „Формат на резултата“ от „Нов ред“ на „Разделени с интервал“ или „Разделени със запетая“, за да се появи полето „Брой набори“. Задайте го на нужния брой независими тегления — например двадесет набора по 3 числа за двадесет кръга на томбола — и изберете дали повторенията са разрешени между отделните набори.

Мога ли да сортирам генерираните числа?

Да. Използвайте опцията „Ред на сортиране“, за да подредите всеки списък във възходящ или низходящ ред, или я оставете на „Няма“, за да запазите числата в реда, в който са изтеглени.

Как да избегна повтарящи се числа?

Включете превключвателя „Без повторения“. Когато е включен, всяко генерирано число в списъка е различно — идеално за жребии, томболи или разделяне на хора в групи. Имайте предвид, че броят не може да надвишава размера на диапазона: не можете да изтеглите 20 уникални числа между 1 и 10.

Защо едни и същи числа продължават да се повтарят?

Защото независимите тегления се повтарят, и точно така изглежда случайността. Всяко теглене напълно игнорира всички предходни тегления, така че в диапазон от 1 до 10 вероятността едно и също число да се появи в две последователни тегления е една десета — това е нормално, а не грешка. Ако ви трябва списък без повторения, включете „Без повторения“; това съзнателно ограничава тегленето, а не поправя грешка.

Защо случайната последователност не изглежда случайна?

Защото истинската случайност е непредвидима, а не равномерно разпределена. Хората очакват случайният резултат да е подреден равномерно, затова струпвания, повторения и кратки серии като 7, 7, 8 изглеждат като грешки, макар да са точно това, което произвежда случайността. Последователност, която на човек изглежда подредена, обикновено не е била случайна.

Мога ли да се доверя на случайност, генерирана в браузър?

Да, когато идва от Web Crypto API, както е тук. crypto.getRandomValues осигурява криптографски сигурни случайни стойности чрез системния източник на случайност на операционната система, а не чрез JavaScript PRNG като Math.random(). На Math.random() не бива да се разчита, когато нещо наистина има значение: той е детерминиран и никога не е бил проектиран да бъде непредвидим.

Могат ли случайните числа да бъдат предвидени или повлияни?

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

Подходящ ли е за избор на победители в томболи или подаръчни кампании?

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

Презареждането на страницата променя ли случайността?

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

Генераторът безплатен ли е, и запазвате ли моите числа?

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