Двойная вероятность случайного числа
У меня имеются группы фруктов.
Группа 1 - Яблоки 5%, Груши - 5%, апельсины - 10%
Группа 2 - Яблоки 1%, Груши - 80%, апельсины - 19%
Группа 3 - Яблоки 0,01%, Груши - 0,01%, апельсины - 0,01%
Не могу понять, как сделать функцию вероятности вытащить или не вытащить фрукт, и если вытащить, то вероятность "какой фрукт", применимый для каждой группы отдельно.
Метод ниже не решает мою задачу, ибо у меня разные вероятности для каждой группы, и сумма вероятностей всегда разная, + нужно учитывать начальный рандом из 100%, чтоб попасть на пустоту, то есть не вытащить ничего.
public int getRandomInt(){
double x = new Random().nextDouble();
if(x < 20) return 3;
else if(x >= 20 && x < 50) return 2;
else return 1;
}
Дополню, что кол-во фруктов в группе, может быть разное. Может быть 2 фрукта, а может 50, но все разные, без дубликатов.
Ответы (1 шт):
Вероятность вытащить фрукт А =
Вероятность_работать_с_группой_1*Вероятность_вытащить_фрукт_А_в_группе_1+
+Вероятность_работать_с_группой_2*Вероятность_вытащить_фрукт_А_в группе_2+
+..........+
+Вероятность_работать_с_группой_N*Вероятность_вытащить_фрукт_А_в_группе_N
Если все возможные названия фруктов известны - то данные представляются матрицей Nx(M+1), где N-количество групп, M-количество видов фруктов (+1 для вероятности "ничего не вытащить" и не возиться с 1-сумма остальных вероятностей по строке).
Если все возможные названия фруктов неизвестны, то - например - данные организуются в в группе в виде списка, и надо проверять, имеется-ли данный фрукт в данной группе.