У нас есть последовательность чисел, состоящая из практически независимых элементов, которые подчиняются заданному распределению. Как правило, равномерному распределению.
Сгенерировать случайные числа в Excel можно разными путями и способами. Рассмотрим только лучше из них.
Рассмотрим их использование на примерах.
Данная функция аргументов не требует (СЛЧИС()).
Чтобы сгенерировать случайное вещественное число в диапазоне от 1 до 5, например, применяем следующую формулу: =СЛЧИС()*(5-1)+1.
Возвращаемое случайное число распределено равномерно на интервале .
При каждом вычислении листа или при изменении значения в любой ячейке листа возвращается новое случайное число. Если нужно сохранить сгенерированную совокупность, можно заменить формулу на ее значение.
Проверим равномерность распределения случайных чисел из первой выборки с помощью гистограммы распределения.
Диапазон вертикальных значений – частота. Горизонтальных – «карманы».
Синтаксис функции СЛУЧМЕЖДУ – (нижняя граница; верхняя граница). Первый аргумент должен быть меньше второго. В противном случае функция выдаст ошибку. Предполагается, что границы – целые числа. Дробную часть формула отбрасывает.
Пример использования функции:
Случайные числа с точностью 0,1 и 0,01:
Сделаем генератор случайных чисел с генерацией значения из определенного диапазона. Используем формулу вида: =ИНДЕКС(A1:A10;ЦЕЛОЕ(СЛЧИС()*10)+1).
Сделаем генератор случайных чисел в диапазоне от 0 до 100 с шагом 10.
Из списка текстовых значений нужно выбрать 2 случайных. С помощью функции СЛЧИС сопоставим текстовые значения в диапазоне А1:А7 со случайными числами.
Воспользуемся функцией ИНДЕКС для выбора двух случайных текстовых значений из исходного списка.
Чтобы выбрать одно случайное значение из списка, применим такую формулу: =ИНДЕКС(A1:A7;СЛУЧМЕЖДУ(1;СЧЁТЗ(A1:A7))).
Функции СЛЧИС и СЛУЧМЕЖДУ выдают случайные числа с единым распределением. Любое значение с одинаковой долей вероятности может попасть в нижнюю границу запрашиваемого диапазона и в верхнюю. Получается огромный разброс от целевого значения.
Нормальное распределение подразумевает близкое положение большей части сгенерированных чисел к целевому. Подкорректируем формулу СЛУЧМЕЖДУ и создадим массив данных с нормальным распределением.
Себестоимость товара Х – 100 рублей. Вся произведенная партия подчиняется нормальному распределению. Случайная переменная тоже подчиняется нормальному распределению вероятностей.
При таких условиях среднее значение диапазона – 100 рублей. Сгенерируем массив и построим график с нормальным распределением при стандартном отклонении 1,5 рубля.
Используем функцию: =НОРМОБР(СЛЧИС();100;1,5).
Программа Excel посчитала, какие значения находятся в диапазоне вероятностей. Так как вероятность производства товара с себестоимостью 100 рублей максимальная, формула показывает значения близкие к 100 чаще, чем остальные.
Перейдем к построению графика. Сначала нужно составить таблицу с категориями. Для этого разобьем массив на периоды:
На основе полученных данных сможем сформировать диаграмму с нормальным распределением. Ось значений – число переменных в промежутке, ось категорий – периоды.
Проведение различных лотерей, розыгрышей и т. п. зачастую проводится во многих группах или пабликах в социальных сетях, Инстаграме и т. д., и используется владельцами аккаунтов для привлечения новой аудитории в сообщество.
Результат таких розыгрышей часто зависит от удачи пользователя, так как получатель приза определяется случайным образом.
Для такого определения организаторы розыгрышей почти всегда используют генератор случайных чисел онлайн или предустановленный, распространяющийся бесплатно.
Довольно часто выбрать такой генератор может быть сложно, так как их функционал достаточно различен – у некоторых он существенно ограничен, у других – довольно широк.
Реализуется достаточно большое количество таких сервисов, но сложность в том, что они отличаются по сфере действия.
Многие, например, привязаны своим функционалом к определенной социальной сети (например, многие приложения-генераторы во ВКонтакте работают только со ссылками этой социальной сети).
Наиболее простые генераторы просто определяют случайно число в заданном диапазоне.
Это удобно потому, что не связывает результат с определенным постом, а значит, могут применяться при розыгрышах вне социальной сети и в различных иных ситуациях.
Иного применения у них, по сути, нет.
<Рис. 1 Генератор>
Совет! При выборе наиболее подходящего генератора важно учитывать то, для каких целей он будет использоваться.
Для наиболее быстрого процесса выбора оптимального онлайн-сервиса генерации случайных чисел в таблице, представленной ниже, приведены основные технические характеристики и функционал таких приложений.
Название | Социальная сеть | Несколько результатов | Выбор из списка чисел | Онлайн-виджет для сайта | Выбор из диапазона | Отключение повторений |
---|---|---|---|---|---|---|
RandStuff | Да | Да | Нет | Да | Нет | |
Cast Lots | Официальный сайт или ВКонтакте | Нет | Нет | Да | Да | Да |
Случайное число | Официальный сайт | Нет | Нет | Нет | Да | Да |
Рандомус | Официальный сайт | Да | Нет | Нет | Да | Нет |
Случайные числа | Официальный сайт | Да | Нет | Нет | Нет | Нет |
Подробнее все приложения, рассмотренные в таблице, описаны ниже.
<Рис. 2 Случайные числа>
<Рис. 3 RandStuff>
Воспользоваться данным приложением в режиме онлайн можно по ссылке на его официальный сайт http://randstuff.ru/number/ .
Это простой генератор случайных чисел, отличающийся быстрой и стабильной работой.
Он успешно реализуется как в формате отдельного самостоятельного приложения на официальном сайте, так и в виде приложения в социальной сети ВКонтакте.
Особенность данного сервиса в том, что он может выбрать случайное число как из указанного диапазона, так и из определенного списка чисел, которые можно указать на сайте.
Плюсы:
Минусы:
Отзывы пользователей о данном приложении таковы: «Определяем через этот сервис победителей в группах В Контакте. Спасибо», «Вы лучшие», «Пользуюсь только этим сервисом».
<Рис. 4 Cast Lots>
Данное приложение представляет из себя простой функциональный генератор, реализующийся на официальном сайте, в виде приложения ВКонтакте.
Также существует виджет генератора для вставки на свой сайт.
Основным отличием от предыдущего описанного приложения является то, что это позволяет отключить повторение результата.
То есть, при проведении нескольких генераций подряд за одну сессию число не повторится.
Негатив:
Отзывы пользователей таковы: «Работает стабильно, достаточно удобно использовать», «Удобный функционал», «Пользуюсь только этим сервисом».
<Рис. 5 Случайное число>
Данный сервис расположен по адресу http://случайноечисло.рф/ .
Простой генератор с минимум функций и дополнительных возможностей.
Может случайным образом генерировать числа в заданном диапазоне (максимум от 1 до 99999).
Сайт не имеет никакого графического оформления, а потому страница легко грузится.
Результат можно скопировать или скачать нажатием одной кнопки.
Негатив:
Вот что пользователи говорят о данном сервисе: «Неплохой генератор, но маловато функций», «Очень мало возможностей», «Подходит для быстрой генерации числа без лишних настроек».
<Рис. 6 Рандомус>
Воспользоваться этим генератором случайных чисел можно по ссылке http://randomus.ru/ .
Еще один, достаточно простой, но функциональный генератор случайных чисел.
Сервис имеет достаточный функционал для определения случайных чисел, однако для проведения розыгрышей и иных более сложных процессов он не подойдет.
Негатив:
И т. д., и используется владельцами аккаунтов для привлечения новой аудитории в сообщество.
Результат таких розыгрышей часто зависит от удачи пользователя, так как получатель приза определяется случайным образом.
Для такого определения организаторы розыгрышей почти всегда используют генератор случайных чисел онлайн или предустановленный, распространяющийся бесплатно.
Довольно часто выбрать такой генератор может быть сложно, так как их функционал достаточно различен – у некоторых он существенно ограничен, у других – довольно широк.
Реализуется достаточно большое количество таких сервисов, но сложность в том, что они отличаются по сфере действия.
Многие, например, привязаны своим функционалом к определенной социальной сети (например, многие приложения-генераторы во работают только со ссылками этой ).
Наиболее простые генераторы просто определяют случайно число в заданном диапазоне.
Это удобно потому, что не связывает результат с определенным постом, а значит, могут применяться при розыгрышах вне социальной сети и в различных иных ситуациях.
Иного применения у них, по сути, нет.
Совет! При выборе наиболее подходящего генератора важно учитывать то, для каких целей он будет использоваться.
Для наиболее быстрого процесса выбора оптимального онлайн-сервиса генерации случайных чисел в таблице, представленной ниже, приведены основные технические характеристики и функционал таких приложений.
Название | Социальная сеть | Несколько результатов | Выбор из списка чисел | Онлайн-виджет для сайта | Выбор из диапазона | Отключение повторений |
---|---|---|---|---|---|---|
RandStuff | Да | Да | Нет | Да | Нет | |
Cast Lots | Официальный сайт или ВКонтакте | Нет | Нет | Да | Да | Да |
Случайное число | Официальный сайт | Нет | Нет | Нет | Да | Да |
Рандомус | Официальный сайт | Да | Нет | Нет | Да | Нет |
Случайные числа | Официальный сайт | Да | Нет | Нет | Нет | Нет |
Подробнее все приложения, рассмотренные в таблице, описаны ниже.
Воспользоваться данным приложением в режиме онлайн можно по ссылке на его официальный сайт http://randstuff.ru/number/ .
Это простой генератор случайных чисел, отличающийся быстрой и стабильной работой.
Он успешно реализуется как в формате отдельного самостоятельного приложения на официальном сайте, так и в виде приложения в .
Особенность данного сервиса в том, что он может выбрать случайное число как из указанного диапазона, так и из определенного списка чисел, которые можно указать на сайте.
Отзывы пользователей о данном приложении таковы: «Определяем через этот сервис победителей в группах В Контакте. Спасибо», «Вы лучшие», «Пользуюсь только этим сервисом».
Данное приложение представляет из себя простой функциональный генератор, реализующийся на официальном сайте, в виде приложения ВКонтакте.
Также существует виджет генератора для вставки на свой сайт.
Основным отличием от предыдущего описанного приложения является то, что это позволяет отключить повторение результата.
Вы когда-нибудь задумывались, как работает Math.random()? Что такое случайное число и как оно получается? А представьте вопрос на собеседовании - напишите свой генератор случайных чисел в пару строк кода. И так, что же это такое, случайность и возможно ли ее предсказать?
Меня очень увлекают различные IT головоломки и задачки и генератор случайных чисел - одна из таких задачек. Обычно в своем телеграм канале я разбираю всякие головоломки и разные задачи с собеседований. Задача про генератор случайных чисел набрала большую популярность и мне захотелось увековечить ее в недрах одного из авторитетных источников информации - то бишь здесь, на Хабре.
Данный материал будет полезен всем тем фронтендерам и Node.js разработчикам, кто на острие технологий и хочет попасть в блокчейн проект/стартап, где вопросы про безопасность и криптографию, хотя бы на базовом уровне, спрашивают даже у фронтендеров.
Этот источник используется для накопления энтропии с последующим получением из неё начального значения (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
Мы получили генератор чисел от 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).
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() возвращает псевдослучайное число с плавающей запятой из диапазона = crypto.getRandomValues(new Uint8Array(1)); console.log(rvalue)
Но, в отличие от ГПСЧ Math.random(), этот метод очень ресурсоемкий. Дело в том, что данный генератор использует системные вызовы в ОС, чтобы получить доступ к источникам энтропии (мак адрес, цпу, температуре, etc…).С помощью этого генератора вы сможете создавать случайные числа в любом диапазоне. Этот генератор также позволит случайно выбрать или определить число из списка. Или создать массив случайных чисел от 2 до 70 элементов. Этот онлайн инструмент не только позволит вам создавать одно (1), двух (2) или трехзначные (3) случайные числа, но и пяти и семи. Легкий в настройке. Каждый сможет его осилисть. Вы также сможете выбирать случайные числа для онлайн или оффлайн лотерей или конкурсов. И это будет удобно. Вы с легкостью сможете создавать целые таблицы или ряды случайных чисел. Вы в доли секунды получите на своем экране случайное число или их последовательность (набор). Если вы берете последовательность своих чисел, то алгоритм выберет случайное или случайные из них, выпасть может любое. Вы и сами с помощью этого инструмента можете проводить розыгрыши. Выбрав, например, одинаковыми диапазон и количество чисел в результате, вы сможете сгенерировать случайную последовательность (комбинацию). Вы также можете выбирать и случайные буквенные комбинации и слова. Этот инструмент, как и все на нашем сайте, абсолютно бесплатные для пользования (без исключений).
Введите числа диапазона
От
До
ГенерироватьИзменение диапазона для генерации случайного числа
1..10 1..100 1..1000 1..10000 для лотереи 5 из 36 для лотереи 6 из 45 для лотереи 6 из 49 для лотереи 6 из 59
Количество случайных чисел (1 )
Исключить повторения
Выбирать случайные значения из списка (разделять запятыми или пробелами, если будут найдены запятые, то деление будет производиться по ним, иначе пробелами)