Как я могу получить случайное число x% времени
int randomNum = ThreadLocalRandom.current().nextInt(min, max + 1);
и y% случаев любое число больше 10.
Может быть тривиально, но я не могу найти простого решения Спасибо за вашу помощь ! :)
макс меньше 10




Вы хотите, чтобы ваш x применялся случайно или детерминировано?
Случайный вариант:
Если вы хотите, чтобы x также было случайным, вы можете просто сгенерировать случайное значение:
int percent = ThreadLocalRandom.current().nextInt(1, 100);
if (percent < x) {
// ...get the actual random value.
}
percent должно быть от 1 до 100, поэтому у вас ровно 100 возможных значений. Если вы включите 0, у вас будет 101. Затем вы выполняете процентную проверку. Если процент находится за пределами (больше) x, x было слишком мало. Поэтому вы получаете false, иначе true. Оттуда вы можете работать с if-условием.
Детерминированный вариант:
Если детерминировано, это зависит от вашего предпочтительного поведения. Например, вы можете использовать счетчик, и каждый раз, когда вы превышаете 100, вы «ломаетесь» и возвращаете true:
// object attribute.
private Integer accumulator = 0;
// in method (should be synchronized, at least on accumulator, if you use multithreading):
accumulator += x;
boolean overflow = false;
if (accumulator >= 100) {
overflow = true;
accumulator %= 100; // this applies modulo 100 to accumulator.
}
if (overflow) {
// ...get the actual random value.
}
При этом вы получите ровно x процентов trues, чем больше вы назовете свой метод. В начале у вас их не будет, разве что 100%, но со временем точность повышается.
Обычно вы используете генератор случайных чисел. Большинство из них возвращают число в интервале [0,1], поэтому вы должны проверить, является ли это число <= x (процент/шанс) или нет. Ниже приведен пример кода
double x=0.1;
if ( Math.random() <= x ) {
int randomNum = ThreadLocalRandom.current().nextInt(min, max + 1);
}
здесь я выбираю вероятность x как 10%, т.е. 0,1. поэтому в 10% случаев вы получите случайное число. вы можете сделать наоборот для y, а также в соответствии с вашими требованиями
Что такое «случайное число» и «любое число больше 10»?