Как сгенерировать рандомное число с заданной суммой цифр в нем

Как сгенерировать рандомное число с заданной суммой цифр в нем


Ответы (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); 
→ Ссылка