乱数

乱数 の Go

2個の演習

乱数について

math/randパッケージは、疑似乱数の生成をサポートしています。

0から99までのランダムな整数を生成するには、次のようにします。

import "math/rand"

n := rand.Intn(100) // n is a random int, 0 <= n < 100

関数rand.Float64は、0.0以上1.0未満のランダムな浮動小数点数を返します。

f := rand.Float64() // f is a random float64, 0.0 <= f < 1.0

スライス(やその他のデータ構造)をシャッフルする機能もあります。

x := []string{"a", "b", "c", "d", "e"}
// shuffling the slice put its elements into a random order
rand.Shuffle(len(x), func(i, j int) {
	x[i], x[j] = x[j], x[i]
})

シード

パッケージmath/randが生成する数列は、真の乱数ではありません。 特定の「シード」値を与えると、結果は完全に決まっています。

Go 1.20以降では、シードが自動的にランダムに選ばれるため、プログラムを実行するたびに異なる乱数列が得られます。

以前のバージョンのGoでは、シードはデフォルトで1でした。 そのため、プログラムの実行ごとに異なる数列を得るには、乱数を取得する前に、乱数生成器に手動でシードを設定する必要がありました。たとえば、現在時刻をシードとして使います。

rand.Seed(time.Now().UnixNano())
GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

乱数を学習する

練習はロックされています

乱数を練習するには、あと2個の演習のロックを解除してください