Построить строку случайным образом, не повторяя

347
tsbarker13

Я не могу найти способ сделать это. У меня есть пять клеток в Excel. Я хочу объединить их в строку случайным образом. Я хочу использовать каждый символ ячейки один раз в строящейся строке, поэтому я получаю строку из пяти символов, без повторов. Скажем, у меня есть A1 = Y, B1 = u, C1 = 6, D1 =%, E1 = z. Я хочу построить строку, в которой каждый символ находится в случайном порядке: uY6% z или zY% u6 одинаково приемлемы (и т. Д. так далее)

Есть ли способ сделать это?

1

2 ответа на вопрос

0
Maarten Bodewes

Вы можете выполнить перемешивание Фишера-Йейтса в VB для приложений (VBA), например, используя реализацию алгоритма, показанную здесь .

Обязательно используйте хороший генератор случайных чисел, криптографически безопасный, если это необходимо. Randomizeпосеян только по системному времени, поэтому я бы не стал проводить с ним лотерею.

0
ljwobker

Похоже, это описывает, что вы хотите?

https://www.extendoffice.com/documents/excel/2484-excel-random-number-no-duplicates-no-repeat.html

Как только вы получите список чисел без дубликатов, вы можете использовать его для INDEX () в ваших значениях с помощью CONCATENATE ().

Это не совсем решает мою ситуацию. Я генерирую случайные символы для ввода пароля, поэтому не все цифры, специальный символ, заглавная буква, строчная буква, число и цифра, которая может быть любой из перечисленных выше. Похоже, что ссылка говорит о цифрах и численном тестировании. tsbarker13 7 лет назад 0