4

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

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

4 回答 4

15

我相信你只是想多了:

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

应该可以正常工作。

于 2012-06-28T15:44:26.427 回答
6

我会把它分成更小的部分来理解:

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

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

于 2012-06-28T15:39:32.553 回答
4
public boolean percent(int p){
    Random r=new Random();
    return r.nextInt(100)<p;
}
于 2012-06-28T15:43:10.140 回答
0

如果您选择 1-100 之间的随机数,这应该很容易。例如55 表示 case percent(50) 如果您假设 1-50 之间的数字为真而其余为假,这将是假的。鉴于您接受 rand() 是完全随机的这一事实,这应该可以解决您的问题。

如此
if (random_num >= percent) 改变
return true;
else
return false;

于 2012-06-28T15:43:58.437 回答