我一直在搜索,发现了类似的主题,但无法理解或了解如何应用它们。
简单:我想要的是在1
和100
之间生成一个数字:
1
至30
的概率应为60%。31
至60
的概率应为35%。61
至100
的概率应为5%。答案 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
其余的应该是条件性的。