Java

Вероятность в JAVA

мне нужно присвоить булевой переменной рандомное значение. ПРитом нужно, чтобы в зависимости от какой-нибудь константы от 0 до 1 булевая переменная меняла вероятность "получения" значения falce. В общем типа рандом, только с контролируемой вероятностью
ну получили рандомом число от 0 до 1, а потом, если это сгенерированное значение, скажем, меньше 0.1 (или чему там равен параметр), присваиваете булевский false
Владимир Быканов
Владимир Быканов
62 634
Лучший ответ
Random r = new Random;

boolean randBoolean = r.nextInt(2) == 0? false : true;
double const = X;
boolean bool = (Math.random()<const) ? true : false;

Значение переменной const (X) - это вероятность получения true. при единице и больше вероятность 100%, при 0 и меньше вероятность 0%. При 0.2 это 20%, при 0.5 50% и т. д.
Вот кусок, который можно реализовать отдельным классом - методом, а потом вызывать, тогда принимает введенный true/false, возвращает true/false на выполнение (удобней)
Или вставить в сам main, но тогда не так удобно и ясно код будет выглядеть, но нет запара насчет отдельного класса - оставляю на выбор
Шанс легко сменить там, где комментарии насчет шанса - просто сменить число в if. Удачи!

Scanner s=new Scanner(System.in);
boolean f = s.nextBoolean();
int a = (int) (Math.ceil(100 * Math.random())); //случайное число от 1 до 100
if (f) //если f - правда
{
if (a <= 70) // 70% шанс на выполнение true
{
//return true, если отдельным методом ( для переменной типа boolean(надо создать отдельно) )
//Если это основная программа, то просто кусок текста на случай удачного выполения
}
else
{
//Действия false / return false
}
}
else
{
if (a <= 25) // 25% шанс на выполнение true при введенном false
{
//Действия true / return true
}
else
{
//Действия false / return false
}
}
//Если это основная программа, то продолжаем код, иначе тут ничего не нужно
}