现在,我将生成1到5之间的随机数。我假设每个数字都有概率或机会获得。 (请假设,例如,如果您不同意)
1有20%
2有20%
3有20%
4有20%
5有20%
我想按照自己的意愿增加或减少某些数字的机会..
1有10%
2有10%
3有35%
4有40%
5有5%
如果是这样,我可以随意生成随机数。有些很难获得,有些会经常获得。 我怎样才能通过Java实现它?请支持我一些例子或一些有用的链接或其他任何东西。我真的很感激。请不要建议描述一些我努力的代码,因为我不知道这一点,我要求你提供一些有用的建议。提前谢谢。
答案 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) ];