Member NFOC Ответов: 2

Как мне кодировать, чтобы получить p раз 1 и (1-p) раз 0?


Используя генератор случайных чисел c++ rand(), реализуйте смещенную монету, которая выводит 1 с вероятностью p и 0 с вероятностью 1–p. Не засевайте генератор случайных чисел в функцию, которую вы будете реализовывать!

Что я уже пробовал:

Я попробовал это сделать, чтобы сгенерировать 0 и 1:

float output=rand()%2;

Richard MacCutchan

Вы должны добавить теги для C, Java и Python. Но ваш вопрос ясно говорит вам использовать C++.

2 Ответов

Рейтинг:
2

Patrice T

1) Выберите свой язык.
2) Изучите, как Рэнд работает на этом языке.

Цитата:
реализуйте смещенную монету, которая выводит 1 с вероятностью p и 0 с вероятностью 1–p.

главное слово - "предвзятое". Это подразумевает 2-шаговый рисунок.
Допустим, шансы равны 0,33 и 0,67.
- нарисуйте случайное число
- проверьте случайность против шансов и решите результат.

Мы не делаем вашу домашнюю работу.
Так что всего несколько намеков.


Рейтинг:
0

OriginalGriff

Внимательно прочтите вопрос: он требует, чтобы вы произвели предвзятую монету: ту, которая возвращает больше 0, чем 1, или наоборот, в зависимости от вероятности, заданной в p

Таким образом, вместо использования 2, которое дает вам прямое соотношение 50:50, вам нужно использовать значение p чтобы предвзято относиться к вашим результатам. С p это значение с плавающей запятой между 0 и 1 и rand всегда возвращает целое число, вам придется быть хитрым.
Я бы начал с выполнения двух тестов: p = 0 (в этом случае возврат 0) и p = 1 (в этом случае возврат 1). Если они оба потерпят неудачу, то сгенерируйте случайное число и умножьте его на p. Если результат больше половины максимального значения rand может вернуться в вашу систему, а затем вернуть 1, в противном случае вернуть 0.

Но это твое домашнее задание, а не мое - так что я не дам тебе никакого кода!