Другие языки программирования и технологии
Есть ли программа способная подогнать случайные числа под нужную сумму
Пример, сумма 7 и его нужно разбить на случайные числа и мне надо чтоб чисел было 3 и она выдавала 4, 2, 1
Такое может только опытный главный бухгалтер )))
Готовых программ я не знаю, но в принципе ты можешь минут за 10 написать ее сама.
Допустим, тебе нужна сумма 16 из 4 чисел.
Тогда генерируем 4/2=2 случайных числа в диапазоне 0-16/2.
Пусть у нас получилось 3 и 7.
Теперь вычисляем еще 2 числа, такие, чтобы в сумме с каждым сгенерированным они давали 16/2=8. Очевидно, что это 5 и 1.
Вот, у тебя есть 3 7 5 1, всего 16, в целом - вполне случайно.
Это идеальный случай с четными числами, для нечетных понадобятся (очень небольшие) модификации алгоритма. Дерзай.
Допустим, тебе нужна сумма 16 из 4 чисел.
Тогда генерируем 4/2=2 случайных числа в диапазоне 0-16/2.
Пусть у нас получилось 3 и 7.
Теперь вычисляем еще 2 числа, такие, чтобы в сумме с каждым сгенерированным они давали 16/2=8. Очевидно, что это 5 и 1.
Вот, у тебя есть 3 7 5 1, всего 16, в целом - вполне случайно.
Это идеальный случай с четными числами, для нечетных понадобятся (очень небольшие) модификации алгоритма. Дерзай.
Сумма 8 -> 6, 1, 1
Сумма 9 -> 7, 1, 1
Так пойдёт? Если не пойдёт, то почему?!
Сумма 9 -> 7, 1, 1
Так пойдёт? Если не пойдёт, то почему?!
Василий Фербер
Там не должно тупо повторяться, то есть повторы могут быть но не одного числа почти на все
Если сумма задана, одно из чисел определяется другими.
https://jsfiddle.net/n1w69fa4/ - несколько строчек на JS. Покликайте)
Сначала создается случайное число `a` от 0 до N
Потом еще одно случайное `b` от 0 до (N - a)
А третье уже и не надо генерировать, = N - a - b
Сначала создается случайное число `a` от 0 до N
Потом еще одно случайное `b` от 0 до (N - a)
А третье уже и не надо генерировать, = N - a - b
Тривиальное решение навскидку: для N чисел с суммой S нужно сгенерить N-1 случайное число a_1, a_2,...a_N-1, где a_i генерится от 1 до S - a_1 - a_2 -..- a_i - 1 включительно, а последнее a_N определяется однозначно как S - a_1 -..-a_N-1.
Подозреваю, что шансы на появление у различных разбиений будут разные. Если нужно именно равномерное распределение, нужно думать.
Подозреваю, что шансы на появление у различных разбиений будут разные. Если нужно именно равномерное распределение, нужно думать.
Василий Фербер
Не нужно равномерное
Наталья, как насчёт чисто математического решения?
1. Генерируется последовательность случайных чисел по произвольному базису.
2. Вычисляется сумма всех членов последовательности.
3. Вычисляется коэффициент пропорциональности суммы к числу 7.
4. Каждый член последовательности отдельно пропорционируется этим коэффициентом.
При необходимости полученные числа можно округлять. Правда, это усложнит задачу.
1. Генерируется последовательность случайных чисел по произвольному базису.
2. Вычисляется сумма всех членов последовательности.
3. Вычисляется коэффициент пропорциональности суммы к числу 7.
4. Каждый член последовательности отдельно пропорционируется этим коэффициентом.
При необходимости полученные числа можно округлять. Правда, это усложнит задачу.
Slava Usolycev
Отдельно придётся обрабатывать результат (0, 0, 0), ведь его никак невозможно пропорционировать до 7. Но в данном случае нетрудно увидеть, что это частный случай равенства всех членов последовательности. Значит, и без коэффициента пропорциональности такой результат соответствует последовательности (2⅓, 2⅓, 2⅓).
почему я такой тупой я ничего не догнал.
Похожие вопросы
- Файл F генерируется из случайных чисел, размерность которой указывает пользователь. Найти сумму четных и нечетных.
- Генератор Случайных Чисел
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- MASM32 случайные числа, , массив
- <<ПОМОГИТЕ! НАПИСАТЬ ПРОГРАММУ НА СИ ИЛИ ПАСКАЛЕ КОТОРАЯ ВЫВОДИТЬ СУММУ ЦИФР ЧИСЛА ОТ 1 ДО N
- Пишу программу-лото на с (НЕ с++ или с#). Как сделать, чтобы генерировались случайные числа, кроме уже выпавших?
- C++ случайные числа
- Заполните случайными числами в
- Делфи, вывод в мемо случайных чисел без повторов из массива. массив от 1 до 35.
- Запишите функцию для получения случайного числа x из промежутка: [0; 15) [0; 15] [-15; 15) [10; 15)
16, 0, 0, 0 тоже вполне себе случайная комбинация.