генерирование случайных чисел с фиксированной суммой
задача предназначена для создания серии псевдо-рэндомов. В частности, как генерировать четыре числа, которые, когда они складываются, равны 40.
вместо того, чтобы полагаться на метод, который может сметить распределение первого числа, используется более равномерный подход. Решение использует стратегию деления предопределенного значения на более мелкие сегменты, используя случайно выбранные разделители.
]. Предположим, что у нас есть четыре случайных положительных целых числа (e, f, g и h) таковы, что 0 d = 40 - g
, расширяя эту концепцию, следующая функция Python генерирует случайный список положительных целых чисел, суммирующих до указанного общего: import random
def constrained_sum_sample_pos(n, total):
"""Return a randomly chosen list of n positive integers summing to total.
Each such list is equally likely to occur."""
dividers = sorted(random.sample(range(1, total), n - 1))
return [a - b for a, b in zip(dividers [total], [0] dividers)]
для генерации неотрицательных целых чисел используется дополнительное преобразование: def constrained_sum_sample_nonneg(n, total):
"""Return a randomly chosen list of n nonnegative integers summing to total.
Each such list is equally likely to occur."""
return [x - 1 for x in constrained_sum_sample_pos(n, total n)]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3