1. ホーム
  2. c#

[解決済み] ランダムなブール値を生成する最速の方法

2022-01-31 04:42:50

質問

C#でランダムなboolを作成する方法はいくつかありますね。

  • Random.Next()を使用する。 rand.Next(2) == 0
  • Random.NextDouble()を使用します。 rand.NextDouble() > 0.5

本当に違いがあるのでしょうか?もしそうなら、どちらが実際に性能が優れているのでしょうか?あるいは、私が見ていない別の方法で、さらに高速になる可能性があるのでしょうか?

解決方法は?

その 最初の選択肢 - rand.Next(2) は、裏で次のようなコードを実行します。

if (maxValue < 0)
{
    throw new ArgumentOutOfRangeException("maxValue",
        Environment.GetResourceString("ArgumentOutOfRange_MustBePositive", new object[] { "maxValue" }));
}
return (int) (this.Sample() * maxValue);

を、そして 第二候補 - rand.NextDouble() :

return this.Sample();

最初のオプションには maxValue バリデーション、乗算、キャスティングを行います。 の方が速いでしょう。 .