Выбрать числа из множеств, чтобы они не пересекались? Всем привет! Имеются множества, например A = [0- 100], B = [101-544], C = [555-1400], D = [1401-2346] Нужно случайным образом выбрать 2 числа из разных множеств, как это лучше сделать? При этом нужно сохранять вероятности выпадения того или иного множества Есть один вариант: 1. Генерируем 1 случайное число из диапазона 0-2346 (например, 105) 2. Получаем множество и границы этого множества (мн. B, границы 101-554) 3. Генерируем второе число. Если это число опять в множестве B, то повторяем генерацию. И так до тех пор, пока не будет получено любое другое множество Но есть минус, при очень больших диапазонах, может несколько раз выпадать число из одного и того же диапазона Может есть более эффективные алгоритмы? Заранее спасибо за ответы
Для более эффективного подхода можно использовать следующий алгоритм:
Вычислить суммарное количество чисел в каждом множестве (например, в A - 101, в B - 444, в C - 846, в D - 946).Сгенерировать случайное число от 1 до суммарного количества чисел во всех множествах.Определить, из какого множества было выбрано число на основе сгенерированного случайного числа и количества чисел в каждом множестве.Сгенерировать второе число из другого множества (не из того же, что и первое число), учитывая вероятности выпадения чисел из каждого множества.
Такой подход обеспечит равные шансы для выбора чисел из каждого множества и избежит ситуации, когда несколько раз подряд выбирается число из одного и того же множества.
Для более эффективного подхода можно использовать следующий алгоритм:
Вычислить суммарное количество чисел в каждом множестве (например, в A - 101, в B - 444, в C - 846, в D - 946).Сгенерировать случайное число от 1 до суммарного количества чисел во всех множествах.Определить, из какого множества было выбрано число на основе сгенерированного случайного числа и количества чисел в каждом множестве.Сгенерировать второе число из другого множества (не из того же, что и первое число), учитывая вероятности выпадения чисел из каждого множества.Такой подход обеспечит равные шансы для выбора чисел из каждого множества и избежит ситуации, когда несколько раз подряд выбирается число из одного и того же множества.