Как создать оператор переключения в случаях, основанных на экспоненциальной вероятности? - PullRequest
0 голосов
/ 16 октября 2019

Итак, я хочу создать инструкцию switch для каждого случая, имеющего различную вероятность выбора.

случай 1 должен быть:

в 2 раза чаще, чем случай 2

в 4 раза чаще, чем в случае 3

16 раз в большей степени, чем в случае 4

256 раз в большей степени, чем в случае 5

Как мне создать эти дела в Java?

1 Ответ

0 голосов
/ 16 октября 2019

Это очень странный вопрос. Если вы делаете это для каких-то практических целей, а не в качестве головоломки, я призываю вас пересмотреть свой подход. В любом случае, это милая небольшая головоломка.

Вот один из способов, которым вы могли бы это сделать - сгенерировать случайное целое число, а затем подсчитать число ведущих нулей.

  • Есть шанс 1/2при наличии нулевых начальных нулей (1)
  • Существует 1/4 вероятности наличия 1 начальных нулей (01)
  • Существует 1/8 вероятности наличия 2 ведущих нулей (001)
  • Вероятность того, что у 3 начальных нулей есть вероятность 1/16 (0001)
  • Вероятность того, что у четырех ведущих нулей есть вероятность 1/32 (00001)
  • Вероятность того, что 5 ведущих нулей (000001)
  • и т. Д.

, может составить 1/64.

Конечно, есть шанс, что вы получите номер, на который у вас нет дела (например, 32). В этом случае вам, вероятно, потребуется сгенерировать новый номер и повторить попытку.

...