Генерация случайных чисел без повторов vba excel

Обновлено: 08.07.2024

Псевдослучайное число отличается от случайного тем, что оно получено с помощью алгоритма, который, в любом случае, подчиняется какой-либо закономерности. Для решения большинства, а возможно и всех, задач в VBA Excel псевдослучайное число можно считать случайным.

Синтаксис

Число – необязательный параметр, определяющий алгоритм вычисления псевдослучайного числа. Зависимость случайного числа от этого параметра:

Число Возвращаемое значение
Меньше нуля Одно и то же псевдослучайное число каждый раз, как результат использования параметра Число в качестве начального значения для алгоритма
Больше нуля Каждое следующее число в псевдослучайном порядке
Равно нулю Самое последнее псевдослучайное число, созданное функцией Rnd
По умолчанию Каждое следующее число в псевдослучайном порядке

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

Функция Rnd – это и есть простейший генератор случайных чисел в VBA Excel, возвращающий значения в интервале 0<=Rnd<1.

Чтобы повысить «случайность» псевдослучайных чисел, возвращаемых функцией Rnd, используется оператор Randomize.

Оператор Randomize

Randomize – это оператор, который инициализирует генератор случайных чисел функции Rnd, задавая начальное число для генерации первого псевдослучайного числа.

Синтаксис

Число – необязательный параметр, задающий начальное число для генерации. Если параметр Число опущен, используется значение, возвращенное системным таймером.

При повторном использовании в VBA Excel оператора Randomize с тем же значением аргумента Число предыдущая последовательность не повторяется.

Для повторения предыдущей последовательности случайных чисел необходимо непосредственно перед оператором Randomize с тем же значением аргумента Число вызвать функцию Rnd с отрицательным аргументом.

Заполнение случайными значениями массива чисел 4 на 5 без повтора
Приветствую вас парни! Подсобите с кодом. Голова уже опухла, хожу блужу вокруг трех сосен. Нужен.


Случайное число в VBA без повтора в диапазоне, работает по нажатию кнопки
Недавно начал изучение и использование VBA в Power Point. Возникла задача: нужно чтобы по нажатию.

Генератор числа без повтора. Не имею понятия в чем дело
Здравствуйте, задача такова. В функции вызвать случайное число, но чтобы онон не повторялось. Я.

Рандом чисел без повтора
Добрый вечер ребят подскажыте код который сможет срандомить и присвоить 10-тю переменым 10 разных.

Проаеряйте через коллекцию или словарь что очередное число уже не генерилось. Ну или можно поиском по уже выгруженным (что дольше). Добавлено через 43 секунды
Ну и что что код - для проверки файл нужен. Так что без проверки.

Спасибо, проверю сообщу)

Добавлено через 5 минут
Все норм работает) спасибо) только вопрос)
получается что возможно только ввести 999 вариантов. При попытке более excel зависает. что делать)?
вариант не вводить более не подходит. так как в этой формуле одновременно может быть комбинация и с 3 и с 2 и с одной цифрой.

Ну а как Вы хотели - на 3 цифры придумать более 999 вариантов? Сплошные нули кажется не генерятся. Но их можно закинуть вручную в случайную ячейку коллекции.
P.S. на файлообменник лично я не ходок в рабочее время. Просто получится даже при генерации числа более 99 зависнет. Так как в файле который выложил есть и по две цифры 24 кб можно и сюда выложить. если xlsm не идет - заархивируйте.

Не знаю, 150 сгенерило влёт.

Добавлено через 8 минут
Проверил - сгенерило и 1000, т.е. нули генерятся!

Я пробовал код на чистом листе - сгенерило 1000 влёт, без тормозов. Могу предложить функцию по генерации массива уникальных целых чисел

Достаточно быстро всё делаеться, и не сложно для понимания,
хотелось бы сделать в виде функции, для того чтобы в аргументы вписать Min и Max
но обычно ими не умеют пользоваться, поэтому я сделал вариант для того
чтобы только скопировать и запустить новый макрос

Добавлено через 6 минут
Суть в следующем:
Сначало в коллекцию переписываются значения от 100 до 1000 по порядку
тоесть 100, 101, 102.
Затем выбираеться индекс, число выбранного индекса записываеться в массив
а сам индекс удаляеться

Добавлено через 39 минут
Вот еще вариант, для самостоятельного определения Min и Max

Как получить случайное число без повтора
Здравствуйте, как получить случайное число? Но так что бы исключить следующий шаг с повтором, то.


По нажатию на кнопку генерируется случайное число в диапазоне от -100 до 100
Разработать Windows Forms приложение, содержащее 2 объекта ListBox и кнопку. По нажатию на кнопку.

Случайное число в диапазоне
Здравствуйте! Есть Edit, в который вводится число х. Нужно сгенерировать случайное число.

Случайное число в диапазоне от -20 до 20
Помогите решить ошипку нужно что бы rand брал диапозон от -20 до 20 // lab_5_2.cpp : Defines the.

Как запустить генератор случайного выбора числа в Excel без повторов? и там ещё по ссылкам. Я там смотрел, но увы, ничего не понял. Часть кода я уже написал:
Но вот как сделать счетчик перед проверкой значения i пока что не понимаю

Решение

Спасибо большое. А можно вкратце прокомментировать, что и за что отвечает, чтобы потом не путаться.?

Добавлено через 13 часов 51 минуту
Shersh, спасибо большое. Ещё один маленький вопрос: а если диапазон будет не от 1 до 60 а к примеру от 20 к 60 то мне нужно 1 везде поменять или что-то ещё дописать?

Решение

если диапазон будет не от 1 до 60 а к примеру от 20 к 60 то Друзья нужна помощь. При сбросе скрипта последовательность случайных чисел повторяется. Можно ли как-то это избежать?

Решение

При сбросе скрипта последовательность случайных чисел повторяется Вставьте инструкцию Randomize перед циклом с Rnd. Она задаст новое опорное число, алгоритм которого зависит от показаний системного таймера. Разумеется последовательность случайных чисел станет другой. Если я правильно понял, то выглядит это вот так, верно? Если я правильно понял, то выглядит это вот так, верно?


Вывести случайное число в диапазоне 15-22
Как сделать, чтобы выводило число рандомом к примеру в диапазоне от 15..22 ?:):)


Вывести случайное число в диапазоне
Как сделать, чтобы выводило число рандомом от 0,329 до 0,348

Случайное вещ число в диапазоне
Не могу догадаться как сделать: Нужно число в диапазоне от 0.01 до 99.99 (случайное). Как это.


Сгенерировать случайное число в диапазоне от 1 до 2
Нужно зарандомить 1 число - либо 1, либо 2. Как это можно сделать?


Сгенерировать 1 случайное число в диапазоне от 1 до 20
Всем привет! Подскажите как можно сгенерировать 1 случайное число в диапазоне от 1 до 20. .


Как сгенерировать случайное число в диапазоне 1 - 10
Здравствуйте! В общем, есть у меня на форме 1 Кнопка, одно Поле для ввода и одна Картинка. У меня.

Во многих случаях вы можете создавать случайные числа в Excel? Но с общими формулами для рандомизации чисел могут быть некоторые повторяющиеся значения. Здесь я расскажу вам несколько хитростей для генерации случайных чисел без дубликатов в Excel.

Создайте уникальное случайное число с помощью Kutools for Excel's Вставить случайные данные (легко!)

Создавайте уникальные случайные числа с помощью формул

Чтобы сгенерировать уникальные случайные числа в Excel, вам нужно использовать две формулы.

doc-randomize-no-repeat-1

1. Предположим, вам нужно сгенерировать случайные числа без дубликатов в столбце A и столбце B, теперь выберите ячейку E1 и введите эту формулу = СЛЧИС () , Затем нажмите Enter ключ, см. снимок экрана:

doc-randomize-no-repeat-2

2. И выберите весь столбец E, нажав Ctrl + Space одновременно, а затем нажмите Ctrl + D ключи для применения формулы = СЛЧИС () ко всей колонке E. См. снимок экрана:

doc-randomize-no-repeat-3

3. Затем в ячейке D1 введите максимальное количество необходимого случайного числа. В этом случае я хочу вставить случайные числа без повторения от 1 до 50, поэтому я введу 50 в D1.

doc-randomize-no-repeat-4

4. Теперь перейдите к столбцу A, выберите ячейку A1, введите эту формулу. =IF(ROW()-ROW(A$1)+1>$D$1/2,"",RANK(OFFSET($E$1,ROW()-ROW(A$1)+(COLUMN()-COLUMN($A1))*($D$1/2),),$E$1:INDEX($E$1:$E$1000,$D$1))) , затем перетащите маркер заполнения в следующий столбец B и перетащите маркер заполнения в нужный диапазон. Смотрите скриншот:

Теперь в этом диапазоне нужные вам случайные числа не повторяются.

Примечание:

1. В приведенной выше длинной формуле A1 указывает ячейку, в которой используется длинная формула, D1 указывает максимальное количество случайных чисел, E1 - первая ячейка столбца, в котором применяется формула = RAND (), а 2 означает, что вы хотите вставить случайное число в два столбца. Вы можете изменить их по своему усмотрению.

2. Когда все уникальные числа сгенерированы в диапазоне, избыточные ячейки будут показаны как пустые.

3. С помощью этого метода вы можете просто сгенерировать случайное число, начиная с числа 1. Но с помощью второго способа вы можете легко указать диапазон случайных чисел.

Генерация уникального случайного числа с помощью Kutools for Excel's Вставить случайные данные

Обработка вышеуказанных формул вызывает слишком много неудобств. Но с Kutools for ExcelАвтора Вставить случайные данные функция, вы можете быстро и легко вставить уникальные случайные числа по мере необходимости, что сэкономит много времени.

Меньше времени, но выше производительность

Включает более 300 профессиональных инструментов для Excel 2019-2003
Первая версия 1.0 была выпущена в 2011 году, сейчас это версия 18.0.
Решает большинство ежедневных сложных задач Excel за секунды, экономя ваше время
30-дневная бесплатная пробная версия без каких-либо ограничений
Бесплатная загрузка Детали функции

После установки Kutools for Excel, сделайте следующее: (Бесплатная загрузка Kutools for Excel прямо сейчас!)


1. Выберите диапазон, необходимый для генерации случайных чисел, и нажмите Kutools > Вставить > Вставить случайные данные. Смотрите скриншот:


2. в Вставить случайные данные диалога, перейдите к Целое на вкладке введите нужный диапазон номеров в от и к текстовые поля и не забудьте проверить Уникальные ценности вариант. Смотрите скриншот:


3. Нажмите Ok для генерации случайных чисел и выхода из диалогового окна.

Примечание:Если количество выбранных вами ячеек превышает случайные числа, избыточные ячейки отображаются как пустые.

Вы также можете вставить случайную уникальную дату, случайное уникальное время по Вставить случайные данные. Если вы хотите получить бесплатную пробную версию Вставить случайные данные, пожалуйста, загрузите его прямо сейчас!

Наконечник.Если вы хотите выбрать или отсортировать данные случайным образом, попробуйте использовать Kutools for Excel's Сортировка диапазона случайным образом как показано на следующем снимке экрана. Полная функция без ограничений в течение 30 дней, пожалуйста, скачайте и получите бесплатную пробную версию сейчас.

Читайте также: