Рубрики

Напишите функцию, которая генерирует одно из 3 чисел в соответствии с заданными вероятностями

Вам предоставляется функция rand (a, b), которая генерирует равновероятные случайные числа между [a, b] включительно. Сгенерируйте 3 числа x, y, z с вероятностью P (x), P (y), P (z), таких что P (x) + P (y) + P (z) = 1, используя данный ранд (a, b ) функция.

Идея состоит в том, чтобы использовать равнобедренную особенность предоставленного ранда (a, b). Пусть заданные вероятности представлены в процентах, например, P (x) = 40%, P (y) = 25%, P (z) = 35%. ,

Ниже приведены подробные шаги.
1) Генерация случайного числа от 1 до 100. Поскольку они равновероятны, вероятность появления каждого числа составляет 1/100.
2) Ниже приведены некоторые важные замечания о сгенерированном случайном числе 'r'.
а) «r» меньше или равно P (x) с вероятностью P (x) / 100.
b) «r» больше, чем P (x), и меньше или равно P (x) + P (y) с P (y) / 100.
c) 'r' больше P (x) + P (y) и меньше или равно 100 (или P (x) + P (y) + P (z)) с вероятностью P (z) / 100.

// Эта функция генерирует «x» с вероятностью px / 100, «y» с
// вероятность py / 100 и 'z' с вероятностью pz / 100:
// Предположение: px + py + pz = 100, где лежат px, py и pz
// от 0 до 100

int random(int x, int y, int z, int px, int py, int pz)

{       

        // Генерируем число от 1 до 100

        int r = rand(1, 100);

       

        // r меньше px с вероятностью px / 100

        if (r <= px)

            return x;

  

         // r больше px и меньше или равно px + py

         // с вероятностью py / 100

        if (r <= (px+py))

            return y;

  

         // r больше чем px + py и меньше или равно 100

         // с вероятностью pz / 100

        else

            return z;

}

Эта функция решит задачу генерации 3 чисел с заданными тремя вероятностями.

Эта статья предоставлена Суровым Агарвалом . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Напишите функцию, которая генерирует одно из 3 чисел в соответствии с заданными вероятностями

0.00 (0%) 0 votes