ホームページ >バックエンド開発 >Golang >Go の「rand.Intn」が常に同じ数値を返すように見えるのはなぜですか?

Go の「rand.Intn」が常に同じ数値を返すように見えるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-01 07:28:11578ブラウズ

Why Does Go's `rand.Intn` Seem to Always Return the Same Number?

なぜ Go の rand.Intn は実行のたびに一貫して同じ数値を返すのですか?

Go の標準ライブラリにはランダムを生成する rand パッケージが含まれています数字。ただし、指定された範囲内のランダムな整数を生成する関数 rand.Intn が常に同じ値を返すという問題が発生する可能性があります。この動作は、次の 2 つの重要な要因に起因すると考えられます。

  1. 初期化されていないデフォルト ソース:
    rand パッケージは、グローバル ソースを使用して乱数を生成します。デフォルトでは、このソースは初期化されていないため、決定的なシーケンスが生成されます。この問題を解決するには、rand.Seed 関数を使用してデフォルトのソースを初期化する必要があります。例:

    rand.Seed(time.Now().UnixNano())
  2. Go Playground キャッシュ:
    Go Playground でコード例を実行すると、出力がキャッシュされます。このキャッシュにより、rand.Intn の真のランダム性がマスクされる可能性があります。この問題を回避するには、必ずローカル マシンでコードを実行するか、出力をキャッシュしないツール (go run.
など) を使用してください。

以上がGo の「rand.Intn」が常に同じ数値を返すように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。