称重数发生器

时间:2015-06-28 01:40:33

标签: java

我一直在搜索,发现了类似的主题,但无法理解或了解如何应用它们。

简单:我想要的是在1100之间生成一个数字:

  • 数字130的概率应为60%。
  • 数字3160的概率应为35%。
  • 数字61100的概率应为5%。

3 个答案:

答案 0 :(得分:1)

获取范围内的数字

首先在3个区间内生成3个随机数。

1:1-30

2:31-60

3:61-100

生成概率数

接下来,生成一个1-100的数字。如果数字为1-60,则选择第一步中的第一个随机数,如果是61-95则执行第二个选项,如果是96-100则选择第三个。

答案 1 :(得分:1)

这听起来像是一个家庭作业问题所以我不会提供代码,但这里有一个简单算法的描述:

生成1到100之间的随机数。让我们称之为X. X将用于确定如何生成最终结果:

如果X介于1和60之间,则生成1到30之间的随机数作为最终结果。

如果X介于61和95之间,则生成31到60之间的随机数作为最终结果。

如果X介于96和100之间,则生成61到100之间的随机数作为最终结果。

您可以看到,对于您想要的每个加权数字,这需要两个随机数生成。它实际上可以简化为单个随机数生成,并留作练习。

仅供参考,如何在一个范围内生成随机数:How do I generate random integers within a specific range in Java?

答案 2 :(得分:0)

对我来说最简单的方法就是生成四个随机数。第一个是1-100。第二个是数字1-30,第三个数字是31-60,第四个数字是61-100。将第一个随机数视为百分比。如果它是1-60你继续运行第二个随机,如果它是60-95运行第三个随机,如果它是95-100运行第四个随机。还有其他方法可以缩短它,但在我看来,这是最容易理解的。

创建随机数1-100:(int)(Math.random()*100)+1 其余的应该是条件性的。