Как сгенерировать рандомное число с заданной суммой цифр в нем
Как сгенерировать рандомное число с заданной суммой цифр в нем
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
можно сделать так (псевдокод)
искомое число = 0
пока сумма > 0:
определить случайное число от 0 до min(сумма, 9)
дополнить разряд в искомом числе - искомое число = искомое число * 10 + определённое случайное число
уменьшить сумму на найденное случайное число
есть один недостаток - если случайное число постоянно будет выдавать 0 (вероятность события стремится к 0, но оно есть для генераторов истинных случайных чисел), то число вы никогда не сгенерируете :)
Автор решения: Мар'ян
→ Ссылка
do {
a = rand() % 900 + 100;
if ((a / 100) + ((a / 10) % 10) + (a % 10) == S) // проверка или сумма цифр в сгенерированном числе = S
{ // если равно, то выводится это число, значение k увеличивается на 1
// если сумма цифр не равна S , генерируется новое число, значение k не меняется
printf("%d ", a); // цикл будет выполняться пока k не приобретет значение K
k++;
}
} while (k <= K);