Как сделать рандом, чтобы чем больше цифра, тем меньше шанс?

мне нужно сделать так чтобы был типо рандом но не рандом, цифры могут быть любыми, просто необходимо то чтобы чем больше цифра , тем меньше шанс на ее выпадение.


Ответы (2 шт):

Автор решения: Harry

Раз вы не ставите задачу точно - вот один из вариантов - для вещественных положительных чисел, экспоненциальное распределение введите сюда описание изображения с параметром 0.1:

mt19937 gen(random_device{}());
exponential_distribution<> d(0.1);

for(int n=0; n<100; ++n)
    cout << d(gen) << endl;

Тут можете сами посмотреть, как часто встречаются числа побольше и поменьше...

Таких распределений - "при больших шансов поменьше" - огромное количество... мощность континуума... Поэтому для точного ответа нужен точный вопрос.

Без точного ТЗ результат - ХЗ...

→ Ссылка
Автор решения: Kromster

Самое простое - взять результат ГСЧ (от 0 до 1) и возвести в степень (например, в квадрат). Так, из равномерного распределения, вы получите неравномерное, в том же диапазоне от 0 до 1, с преобладанием меньших чисел.

Для более точного ответа, надо знать/указать желаемое распределение и диапазон чисел.

→ Ссылка