Go の乱数ジェネレーターの精度をテストする手順には、多数の乱数を生成し、均等な分布を確保するために各範囲での出現数をカウントすることが含まれます。正規分布を保証するために、指定された平均と標準偏差の各範囲での出現数をカウントします。
Golang の乱数ジェネレーターの精度をテストすることは、アプリケーション内の乱数が予測可能で推測不可能であることを保証するため、非常に重要です。
乱数ジェネレーターをテストするには、乱数ジェネレーターを作成してインスタンス化する必要があります。この場合、math/rand
包中的 Rand
タイプを使用します:
import ( "math/rand" "time" ) // 随机数生成器 rng := rand.New(rand.NewSource(time.Now().UnixNano()))
一様分布乱数は、指定された範囲内でランダムに表示されます。これをテストするには:
// 均匀分布测试 桶数 := 10 范围 := 0.0 for i := 0; i < 桶数; i++ { 范围 += 1.0 / float64(桶数) } 桶计数 := make([]int, 桶数) for i := 0; i < 1000000; i++ { n := rng.Float64() for j := 0; j < 桶数; j++ { if n < 范围 { 桶计数[j]++ break } else { 范围 += 1.0 / float64(桶数) } } } // 检查桶数是否大致均匀
正規分布する乱数は、指定された平均値と標準偏差の周りにクラスター化されている必要があります。これをテストするには:
// 正态分布测试 平均值 := 0.0 标准差 := 1.0 桶数 := 10 范围 := 默认计算桶范围 桶计数 := make([]int, 桶数) for i := 0; i < 1000000; i++ { n := rng.NormFloat64(平均值, 标准差) for j := 0; j < 桶数; j++ { if n < 范围 { 桶计数[j]++ break } else { 范围 += 默认计算桶范围 } } } // 检查桶数是否与正态分布相符
パスワードを生成する関数があるとします:
func 生成密码(长度 int) string { 密码 := "" for i := 0; i < 长度; i++ { 密码 += 字符(rng.Intn(26) + 'a') } return 密码 }
パスワードが安全であることを確認するには、次のテストを行います:
乱数ジェネレーターの精度をテストすることで、次のことが可能になりますアプリケーションが安全で信頼できるランダムセックスに依存していることを確認してください。
以上がGolang で乱数ジェネレーターの精度をテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。