我一直试图为一个简单的战斗模拟器编写这个程序,我必须做的一个任务是询问用户在一轮战斗中低,中,高攻击的百分比。
例如,用户输入low = 50%,medium = 30%,high = 20%。现在我的问题从这里开始。如何使程序在一轮中打印低50%的时间,中30%的时间和高20%的时间?
发布于 2014-02-06 07:47:48
在不给出确切的Java代码的情况下,以下是您需要做的:
[0, 0.5>,[0.5, 0.8>;[0.8, 1.0>.你能从这里弄明白吗?
事后想一想:在您的例子中,用户输入的值加起来是100%。一般来说,这可能不是真的;然后你首先计算“表观间隔”,最后将它们缩放到最大值1。假设用户输入了50,30,30% (无法计算...)。你的时间间隔是
0, .5
.5, .8
.8, 1.1你必须除以1.1才能得到正确的区间。或者你可以将你的随机数乘以1.1。
发布于 2014-02-06 08:55:30
我能想到的最简单的方法是创建一个等比例的数组(这里我创建了10个字符串,其中有5个低点,3个中点和2个高点)
String[] probabilities = { "low", "low", "low", "low", "low", "medium", "medium", "medium", "high", "high };然后使用随机数从数组中选取一个元素
Random random = new Random(); // might want to give it a seed here
int randomIndex = random.nextInt(probabilities.length);
String probability = probabilities[randomIndex];对于大样本,这将为您提供所需的分布。
https://stackoverflow.com/questions/21591096
复制相似问题