Как сделать рандом, чтобы чем больше цифра, тем меньше шанс?
мне нужно сделать так чтобы был типо рандом но не рандом, цифры могут быть любыми, просто необходимо то чтобы чем больше цифра , тем меньше шанс на ее выпадение.
Ответы (2 шт):
Раз вы не ставите задачу точно - вот один из вариантов - для вещественных положительных чисел, экспоненциальное распределение
с параметром 0.1:
mt19937 gen(random_device{}());
exponential_distribution<> d(0.1);
for(int n=0; n<100; ++n)
cout << d(gen) << endl;
Тут можете сами посмотреть, как часто встречаются числа побольше и поменьше...
Таких распределений - "при больших шансов поменьше" - огромное количество... мощность континуума... Поэтому для точного ответа нужен точный вопрос.
Без точного ТЗ результат - ХЗ...
Самое простое - взять результат ГСЧ (от 0 до 1) и возвести в степень (например, в квадрат). Так, из равномерного распределения, вы получите неравномерное, в том же диапазоне от 0 до 1, с преобладанием меньших чисел.
Для более точного ответа, надо знать/указать желаемое распределение и диапазон чисел.