指定随机机会

时间:2014-03-18 08:28:45

标签: java

现在,我将生成1到5之间的随机数。我假设每个数字都有概率或机会获得。 (请假设,例如,如果您不同意)

  

1有20%

     

2有20%

     

3有20%

     

4有20%

     

5有20%

我想按照自己的意愿增加或减少某些数字的机会..

  

1有10%

     

2有10%

     

3有35%

     

4有40%

     

5有5%

如果是这样,我可以随意生成随机数。有些很难获得,有些会经常获得。 我怎样才能通过Java实现它?请支持我一些例子或一些有用的链接或其他任何东西。我真的很感激。请不要建议描述一些我努力的代码,因为我不知道这一点,我要求你提供一些有用的建议。提前谢谢。

4 个答案:

答案 0 :(得分:11)

解决方案很简单:

double r = random.nextDouble();
if (r < 0.1) ret = 1
else if (r < 0.2) ret = 2
else if (r < 0.55) ret = 3
...

你明白了,将累积可能性作为阈值。

答案 1 :(得分:3)

首先实例化java.util.Random rand = new java.util.Random();。这样做一次。

从那里开始,一种方法是使用double f = rand.nextDouble();,它给你一个介于(和包括)0到(不包括)1之间的数字。

然后使用一系列if s进行转换:

if (f < 0.1){
    return 1;
} else if (f < 0.1 + 0.1){
    return 2;
} else if (f < 0.1 + 0.1 + 0.35){
    return 3;
... /*can you see the pattern*/

这不是最快的方式,但很清楚,会让你开始。

答案 2 :(得分:0)

我不知道是否有随机库的方法。 但我认为你可以生成1到100之间的随机数。 因此,您可以在以下代码之间进行编码:

1和10你获得1, 11和20你获得2, 21和55你得到3,

等等

答案 3 :(得分:0)

我可以考虑的另一种选择

int[] a = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 5, 5, 5, 5, 5};

Random r = new Random();
return a[ r.nextInt(100) ];