雑多なブログ

音楽や語学、プログラム関連の話題について書いています

go - ランダムな数字を生成する

簡易的にランダムな数字を生成する方法を調べた。

goでランダムな数字を生成する場合 math/rand が使用できる。
使用方法は至ってシンプル。

package main

import (
    "time"
    "math/rand"
)

func main() {
    rand.Seed(time.Now().Unix())
    num := rand.Intn(6)
    println(num)
}

なお、math/rand は特定されると問題になるような値の生成には使わない方が良い(例: ユーザーIDやセッションIDなど)。 厳密にランダムな値を生成する場合は、crypt/rand を使う方が良い。

例ではSeedに time.Now().Unix() を指定しているので、乱数を生成した付近の時間帯を総当たりでチェックされると、値を特定できてしまう可能性がある。