manfredina.ru - Генерация случайных чисел в определенном интервале - C# для


Как сделать генерацию случайных чисел

Постановка задачи

Предположим, что нам необходимо создать набор целых случайных чисел генерацию без повторов в заданном интервале значений. Примеры с ходу:

  • генерация уникальных случайных кодов для товаров или пользователей
  • назначение людей на задачи (каждому по случайной из списка)
  • перестановки слов в поисковом запросе (привет seo-шникам)
  • игра в лото и т.д.
    как сделать генерацию случайных чисел

Способ 1. Простой

Для начала рассмотрим простой вариант: нам необходимо получить случайный набор из 10 целых чисел от 1 до 10. Использование встроенной в Excel функции СЛУЧМЕЖДУ (RANDBETWEEN) уникальности не гарантирует. Если ввести ее в ячейку листа и скопировать вниз на 10 ячеек, то запросто могут случиться повторы:

random-unique3.png

Поэтому мы пойдем другим путем.

Во всех версиях Excel есть функция РАНГ (RANG), предназначенная для ранжирования или, другими словами, определения топовой позиции числа в наборе. Для самого большого числа в списке ранг=1, второе в топе имеет ранг=2 и т.д.

Введем в ячейку А2 функцию СЛЧИС (RAND) без аргументов и скопируем формулу вниз на 10 ячеек. Эта функция сгенерирует нам набор из 10 случайных дробных чисел от 0 до 1:

random-unique1.png

В соседний столбец введем функцию РАНГ, чтобы определить позицию в рейтинге для каждого полученного случайного числа:

random-unique2.png

Получим в столбце В то, что хотели - любое нужное количество неповторяющихся случайных целых чисел от 1 до 10.

Чисто теоретически, может возникнуть ситуация, когда СЛЧИС выдаст нам два одинаковых случайных числа в столбце А, их ранги совпадут и мы получим повтор в столбце В. Однако, вероятность такого сценария крайне мала, учитывая тот факт, что точность составляет 15 знаков после запятой.

Способ 2. Сложный

Этот способ чуть сложнее, но использует всего одну формулу массива. Допустим, нам нужно создать на листе список из 9 неповторяющихся случайных целых чисел в интервале от 1 до 50.

Введите в ячейку А2 следующую формулу, нажмите в конце Ctrl+Shift+Enter (чтобы ввести ее как формулу массива!) и скопируйте формулу вниз на требуемое количество ячеек:

random-unique4.png

Способ 3. Макрос

Ну и, конечно, можно решить задачу с помощью программирования на Visual Basic. В одной из старых статей про случайную выборку я уже приводил  макро-функцию массива Lotto, которая выдает требуемое количество случайных неповторяющихся чисел из заданного интервала.

Ссылки по теме



Источник: http://www.planetaexcel.ru/techniques/14/230/


Закрыть ... [X]

Генерация псевдослучайных чисел / Хабрахабр Как сделать вирус для человека

Как сделать генерацию случайных чисел Генератор Случайных Чисел онлайн БЕСПЛАТНО
Как сделать генерацию случайных чисел Генератор псевдослучайных чисел Википедия
Как сделать генерацию случайных чисел Генерация случайных чисел в.NET / Хабрахабр
Как сделать генерацию случайных чисел Генератор случайных чисел rand в С - CppStudio
Как сделать генерацию случайных чисел Случайные числа без повторов
Как сделать генерацию случайных чисел 100 рецептов красоты ВКонтакте
Как сделать генерацию случайных чисел «Твое тело говорит Люби себя!» читать
Как сделать генерацию случайных чисел А где можно почитать какие на форуме вообще есть статусы? Архив
Альбом для монет своими руками. 2 способа изготовления для новичков Как быстро избавиться от прыщей на лице за 1 день в домашних Как сделать бант из волос: пошаговая инструкция с фото и видео Кофе: цитаты, высказывания, афоризмы - Жемчужины мысли Отбеливание зубов в домашних условиях. Способы Поделки из природного материала на тему «Осень» Почесуха: фото, причины, симптомы, лечение