Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用基于指数概率的案例创建switch语句?_Java_Switch Statement_Probability - Fatal编程技术网

Java 如何使用基于指数概率的案例创建switch语句?

Java 如何使用基于指数概率的案例创建switch语句?,java,switch-statement,probability,Java,Switch Statement,Probability,所以我想创建一个switch语句,每种情况都有不同的被选择概率 案例1需要: 发生概率为案例2的2倍 发生概率是案例3的4倍 发生概率是案例4的16倍 发生情况5的可能性高出256倍 我将如何在java中创建这些案例?这是一个非常奇怪的问题。如果你这样做是为了一些实际的目的,而不是作为一个谜,我敦促你重新考虑你的方法。总之,这是一个很好的小谜题 这里有一种方法可以做到这一点——生成一个随机整数,然后计算前导零的数量 有1/2的几率有零前导零(1) 有1/4的几率有1个前导零(01) 有1/8的

所以我想创建一个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
然后,您可以对该号码进行切换


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

为什么要切换?一个
if
似乎在这里更有意义。关于这个主题已经有了一条线索。。希望能对你有所帮助。我只是倾向于用switch语句来处理这类随机问题。如果我要使用If语句,我应该使用什么条件?