以x百分比返回true或false的方法

时间:2012-06-28 15:36:23

标签: java

我正在寻找一种按给定百分比整数随机回答真或假的方法。例如:

percent(100); //Will always 100% return true
percent(50); //Will return 50% true, or 50% false
percent(0); //Will always 100% return false, etc..

这是我提出的,但由于某种原因,它不能正常工作:

public static boolean percent(int percentage)
{
    Random rand = new Random();
    return ((rand.nextInt((100-percentage)+1))+percentage)>=percentage;
}

我需要一个非常准确和真实的方法,请帮助它太复杂它让我头疼

4 个答案:

答案 0 :(得分:12)

我相信你只是在思考它:

return (rand.nextInt(100) < percentage);

应该可以正常工作。

答案 1 :(得分:6)

我会把它分成小块来理解:

public boolean rollDie(int percentGiven)
{
  Random rand = new Random();
  int roll = rand.nextInt(100);
  if(roll < percentGiven)
    return true;
  else
    return false;
}

通常,命名约定和跨越更多行的代码(而不是堆叠在一行中的许多方法调用)可以更容易地解决问题。在这里,我使用明确的名称,使其易于阅读。对于像我这样的初学者来说,这对于解释非常紧凑的代码并不是很好。

答案 2 :(得分:4)

public boolean percent(int p){
    Random r=new Random();
    return r.nextInt(100)<p;
}

答案 3 :(得分:0)

如果您在1-100之间选择一个随机数,那应该很容易。 例如 55对于案例百分比(50),如果您假设1-50之间的数字为真且其余为假,则这将为假。鉴于你接受rand()是完全随机的,这样可以解决你的问题。

因此
if (random_num >= percent) 已更改
    return true;
else
return false;