Бих се радвал, ако споделите тези страници с приятели, ги запазите в отметки или ги свържете. Благодаря! 🙏

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

Acrafto Team Математика
Актуализирано
Бързи готови настройки
Всичко работи във вашия браузър. Нито едно число не напуска устройството ви.

Как работи генераторът на случайни числа?

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

Сигурен режим черпи ентропия от операционната ви система чрез Web Crypto API (crypto.getRandomValues()). Той е непредвидим и невъзпроизводим – правилният избор за истинско теглене, при което никой не бива да може да предвиди резултата предварително.

Сийд режим превръща въведения от вас текст в начално състояние за детерминиран генератор (xoshiro128**). Един и същ сийд винаги произвежда едни и същи числа, така че всеки може да повтори вашето теглене и да потвърди резултата.

И двата режима работят изцяло във вашия браузър. Нито едно число не достига до сървър.

Без модуло изкривяване (modulo bias)

Повечето прости генератори превръщат случайна 32-битова стойност в желания диапазон чрез value % range. Когато диапазонът не се дели точно на 2³², най-ниските числа излизат малко по-често от останалите. При хиляди тегления това е измеримо.

Този генератор използва вместо това отхвърляне на извадки (rejection sampling): стойностите, попадащи в неравномерния „опашен” остатък, се изхвърлят и се тегли отново. Всяко число в диапазона ви има точно еднакъв шанс. Можете сами да го проверите с вградения тест за равномерност.

Какво може генераторът

Диапазон

  • Минимум и максимум – всеки цял или десетичен диапазон, включително отрицателни стойности
  • Брой числа – от 1 до 1 000 000 в едно теглене
  • Без повторения – всяко число се появява най-много веднъж, както при истинско теглене
  • Сортиране – ред на изтегляне, възходящо или низходящо; сортирането по никакъв начин не влияе на случайността
  • Стъпка – ограничава резултатите до кратни на дадена стойност, така че да излизат само 0, 5, 10, 15
  • Изключени числа – списък със стойности, които никога не трябва да бъдат изтеглени

Режим

  • Източник на случайност – сигурен (Web Crypto) или сийд (възпроизводим)
  • Сийд – произволен текст; един и същ сийд винаги повтаря същото теглене
  • Разпределение – равномерно, нормално (гаусово), експоненциално, поасоново, триъгълно, биномно
  • Тегла – дайте по-голям шанс на избрани числа, зададени като number:weight
  • Нотация за зарове3d6+2, d20, 2d20kh1 за преимущество, 4d6dl1 за хвърляне на характеристики

Изход

  • Разделител – запетая, интервал, точка и запетая, табулация, нов ред или произволен текст
  • Числова система – десетична, двоична, осмична, шестнадесетична или основа 36
  • Допълване с нули – превърнете 7 в 007 за номера на билети или ID
  • Представка и наставка – обвийте всяко число с фиксиран текст
  • Шаблон{n} е числото, {i} – позицията му, така user{n} става user42
  • Копиране като – обикновен текст, CSV, JSON или Markdown таблица

Статистика

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

История

Последните 50 тегления се пазят в браузъра ви заедно с настройките, които са ги произвели – с едно кликване можете да възстановите всяко от тях. Често използвани конфигурации могат да се запазят като именувани пресети, а цялата колекция може да се експортира в JSON файл и да се импортира на друго устройство. Нищо не се съхранява никъде другаде освен в този браузър.

Клавиатура

Натиснете Интервал или R, за да изтеглите отново, без да посягате към мишката.

Бързи пресети

ПресетДиапазонБройУпотреба
🎲 Зар1–61Настолни игри, вземане на решения
🪙 Монета0–11Ези или тура
🎰 Лотария1–496Уникални, сортирани, като истинско теглене
💯 1–1001–1001Проценти, A/B разделяне
🔢 ПИН0–94Четири цифри, повторенията са позволени

Възпроизводими тегления

Сийд режимът съществува за моментите, в които „вярвайте ми, беше случайно” не е достатъчно.

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

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

Избор на разпределение

Равномерното разпределение дава на всяко число в диапазона еднакъв шанс. Това обикновено се има предвид под „случайно” и е стойността по подразбиране.

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

  • Нормално (гаусово) – ръст, грешки при измерване, резултати от тестове. Задайте средна стойност и стандартно отклонение.
  • Експоненциално – времена на изчакване между независими събития.
  • Поасоново – брой събития във фиксиран интервал: пристигания на час, дефекти на партида.
  • Триъгълно – когато знаете минимума, максимума и най-вероятната стойност, но нищо друго. Често срещано при оценки на проекти.
  • Биномно – брой успехи от фиксиран брой опити при фиксирана вероятност.

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

Къде се използват случайните числа

Игри и забавления

  • Настолни игри – хвърляне на зар, ред на игра
  • Настолни ролеви игри (RPG)4d6dl1 за характеристики, 2d20kh1 за преимущество
  • Раздавания на награди – избор на победител, със сийд, за да могат участниците да проверят резултата
  • Викторини – случаен ред на въпросите

Статистика и наука

  • Извадки – изтегляне на извадка от популация без повторения
  • A/B тестване – разпределяне на участници в групи
  • Симулация Монте Карло – оценка на вероятност чрез повторение
  • Bootstrap – повторна извадка за оценка на несигурност

Разработка

  • Тестови данни – милион стойности, генерирани във фонов режим, така че страницата остава отзивчива
  • Фикстури – със сийд, така че неуспешен тест да се провали по един и същ начин всеки път
  • Случайни ID – с допълване, представки или шаблон
  • Тестове на натоварване – шаблонни идентификатори като user{n}@example.com

Истински срещу псевдослучайни числа

Math.random()crypto.getRandomValues()Сийд (xoshiro128**)
ТипПсевдослучайниКриптографски сигурниПсевдослучайни, детерминирани
Източник на ентропияСийд, избран от машинатаСистемен CSPRNGВашият сийд текст
Предсказуеми ли са?Потенциално даНеДа, по замисъл
Възпроизводими ли са?НеНеВинаги
Подходящи ли са за сигурностНеДаНе
Подходящи ли са за статистикаЗависиДаДа
Подходящи ли са за проверими тегленияНеНеДа

Math.random() не се използва никъде в този инструмент.

Тегления без повторения

При включена опция Без повторения всяко число от диапазона се появява най-много веднъж. Идеално за:

  • Раздавания на награди – никой не може да спечели два пъти
  • Пермутации – разбъркване на набор от елементи
  • Бинго – изтеглени числа остават изтеглени
  • Лотария – шест различни числа от 1 до 49

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

Експортиране на резултати

Копирайте числата като обикновен текст с разделител по избор, като CSV за електронна таблица, като JSON за код или като Markdown таблица за документация. Много големите тегления остават изцяло в паметта и се копират изцяло, дори когато на екрана се изобразяват само първите няколко хиляди.

Генериране на случайни числа в собствен код

JavaScript / TypeScript

// Cryptographically secure integer in [min, max], without modulo bias.
// The naive `value % range` favours low numbers when range does not
// divide 2**32 evenly - so we reject values in the uneven tail.
function randomInt(min, max) {
  const range = max - min + 1;
  const limit = Math.floor(0x100000000 / range) * range;
  const arr = new Uint32Array(1);
  let value;
  do {
    crypto.getRandomValues(arr);
    value = arr[0];
  } while (value >= limit);
  return min + (value % range);
}

Python

import random
import secrets

# Cryptographically secure, no modulo bias
n = secrets.randbelow(max - min + 1) + min

# Reproducible: the same seed always gives the same sequence
rng = random.Random('my-seed')
n = rng.randint(min, max)

# Without repetition
sample = random.sample(range(min, max + 1), count)

PHP

// Cryptographically secure (PHP 7+), no modulo bias
$n = random_int($min, $max);

// Reproducible
mt_srand(crc32('my-seed'));
$n = mt_rand($min, $max);

Често задавани въпроси (ЧЗВ)

Наистина ли резултатът е случаен? В сигурен режим – да. Той идва от crypto.getRandomValues(), криптографски сигурен генератор, захранван от пула на ентропия на операционната ви система. Резултатите са равномерно разпределени и непредвидими. Сийд режимът умишлено е обратното: той е възпроизводим и точно в това е смисълът му.
Колко числа мога да генерирам наведнъж? До 1 000 000. Теглениятa над 50 000 се изчисляват във фонов уъркър, така че страницата остава отзивчива, а на екрана се показват първите 2 000 с брой на останалите – копирането все пак дава всичко.
Мога ли да генерирам отрицателни числа? Да. Задайте отрицателен минимум. Работи целият диапазон на JavaScript числата, включително отрицателни граници и от двете страни.
Влияе ли сортирането на случайността? Не. Числата първо се теглят, а после се сортират. Сортирането променя само реда, в който ги виждате.
Ще даде ли същият сийд същите числа утре? Да, и на всяко друго устройство или браузър. Сийд генераторът е напълно детерминиран и зависи единствено от сийда и настройките ви.
Какво ми показва тестът за равномерност? Той изпълнява хи-квадрат тест, сравняващ колко пъти всяко число реално се е появило спрямо колко пъти е трябвало да се появи. Ако статистиката остане под критичната стойност, резултатите съответстват на равномерно разпределение. За смислен резултат е нужен сравнително тесен диапазон и достатъчно тегления – поне пет за всяка възможна стойност.
Как работят теглата? Задайте ги като двойки number:weight, например 1:5, 2:1, 3:1. Тук 1 е пет пъти по-вероятно да излезе от 2 или 3. Числата, които не сте изброили, получават тегло нула и никога не се теглят.
Каква нотация за зарове се поддържа? 3d6 хвърля три шестостенни зара. Добавете модификатор с 3d6+2. Запазвайте или отхвърляйте зарове с kh, kl, dh, dl – така 2d20kh1 запазва по-високия от два d20 (преимущество), а 4d6dl1 отхвърля най-ниския от четири d6.
Съхранява ли се историята ми някъде? Само в този браузър, в локалното хранилище. Тя никога не достига до сървър, не се синхронизира с друго устройство и изчезва, ако изчистите данните на сайта. Експортирайте я в JSON, ако искате да я запазите или преместите.