В LUA получить список случайных чисел между диапазонами, но разрешить х набор дубликатов на число - PullRequest
0 голосов
/ 20 ноября 2018

Существует множество примеров генерации случайных чисел в LUA, которые не имеют дубликатов, и просто стандартный math.random (x, y) может получить набор случайных целых чисел в диапазоне ....

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

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

ПримерРезультат: 1,1,2,4,5,5,7,7,8,9

В этом примере результат math.random () попытался выплюнуть 3 или более одинаковых числа, но код заставляет его вернуться и повторить попытку, если он уже произвел 2 с тем же номером.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018
  • Создание последовательного списка неслучайных чисел в диапазоне с без дубликатов.
  • Добавьте их в таблицу, но добавьте каждое число X количество раз, где X допустимое количество дубликатов Итак, мы знаем, есть таблица х раз с каждым отдельным числом, перечисленным X количество раз.
  • Перемешайте таблицу, или сгенерируйте список случайных чисел или оба.
  • Затем просто извлеките числа из таблицы, используя сгенерированные числа в качестве числового значения ключа для «дубликата» таблицы.
  • Вы можете хранить все что угодно с этими значениями ключа, так что это работает для что угодно .. не только цифры.
0 голосов
/ 20 ноября 2018

Вы можете использовать «трюк слияния»:

  1. Создание "уникального" массива чисел для 5 (10 / число дубликатов) элементов: 1,2,5,7,9

  2. Повтор № 1

  3. Объединение массивов.

Вы можете обобщить его с помощью параметров minValue, maxValue, totalNumber, numberOfDublicates, но потребуется немного больше кода для обработки 10/3 проблем и maxValue

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...