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;
}

多くの場合、(1行に積み重ねられた多くのメソッド呼び出しの代わりに)より多くの行にまたがる命名規則とコードの分割により、問題の解決が容易になります。ここでは、読みやすくするために明示的な名前を使用しています。これは、非常にコンパクトなコードの解釈が苦手な私のような初心者に適しています。

于 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 の場合、percent(50) の場合、1 から 50 までの数字が true で残りが false であると仮定すると、これは false になります。rand() が完全にランダムであることを受け入れるという事実を考えると、これで問題が解決するはずです。

とても
if (random_num >= percent) 変わった
return true;
else
return false;

于 2012-06-28T15:43:58.437 に答える