首页 > 解决方案 > 如何使用基于指数概率的案例创建 switch 语句?

问题描述

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

案例1需要是:

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

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

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

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

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

标签: javaswitch-statementprobability

解决方案


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

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

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

然后你可以switch在这个号码上。

当然,您有可能会得到一个您没有理由使用的数字(例如 32)。在这种情况下,您可能需要生成一个新号码并重试。


推荐阅读