如何创建基于指数概率的案例的开关语句?



所以我想创建一个switch语句,每个案例都有不同的被选择概率。

案例 1 需要:

发生的可能性是病例 2 的 2 倍

发生的可能性是病例 3 的 4 倍

发生的可能性是病例 4 的 16 倍

发生的可能性是病例 5 的 256 倍

我将如何在 java 中创建这些案例?

这是一个非常奇怪的问题。如果你这样做是出于某种实际目的,而不是作为一个难题,我敦促你重新考虑你的方法。无论如何,这是一个不错的小谜题。

这里有一种方法可以做到这一点 - 生成一个随机整数,然后计算前导零的数量。

  • 1/2 的机会有零前导零 (1(
  • 有 1
  • /4 的机会有 1 个前导零 (01(
  • 1/8 的机会有 2 个前导零 (001(
  • 有 1/16 的几率有 3 个前导零 (0001(
  • 1/32 的几率有 4 个前导零 (00001(
  • 1/64 的几率有 5 个前导零 (000001(

然后,您可以switch这个数字。

当然,你有可能得到一个你没有案例的数字(比如32(。在这种情况下,您可能需要生成一个新数字,然后重试。

最新更新