java - 如何使用基于指数概率的案例创建 switch 语句?
问题描述
所以我想创建一个 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
) - ETC
然后你可以switch
在这个号码上。
当然,您有可能会得到一个您没有理由使用的数字(例如 32)。在这种情况下,您可能需要生成一个新号码并重试。
推荐阅读
- docker - docker swarm 不会将任务分配给新的工作节点
- java - Spring Controller - 显示 JSON 而不是 Whitelabel 错误页面(在浏览器中)
- git - 无法将大项目上传到 git
- repository - 如何将 Nexus 存储库从 1.7 迁移到 3.x?
- javascript - 如何使用 jsPsych 心理物理学插件中的“手动”属性调用函数来绘制刺激?
- javascript - 你如何获得它的最高数字(值)并使用 Javascript 在 Json 的 ObjectArray 中显示键 [name]?
- html - 第一次迭代后无法获得选择的选择值
- java - 如何使用java Map
在 JOOQ 中生成插入和更新 sql 查询(不生成代码)? - react-native - 将异步函数的结果存储到变量中
- autocomplete - 如何在 Visual Studio 代码中自动完成工作?