Golang でランダムな浮動小数点数を生成するにはどうすればよいですか?

WBOY
リリース: 2024-06-01 18:27:00
オリジナル
489 人が閲覧しました

Golang でランダムな浮動小数点数を生成するには、2 つの一般的な方法があります。1 つは math/rand パッケージを使用し、rand.Float64() を呼び出して範囲 [0, 1) の浮動小数点数を生成することです。 crypto/rand パッケージを使用してランダムなバイト配列を生成し、それを浮動小数点数に変換します。これは安全なランダム性のシナリオに適しています。

如何在 Golang 中生成随机浮点数?

Golang でランダムな浮動小数点数を生成するにはどうすればよいですか?

Golang ではランダムな浮動小数点数を生成する方法がたくさんありますが、今日は最も一般的に使用される 2 つの方法を紹介します。

math/rand パッケージを使用する

math/rand パッケージは、範囲 [0, 1) のランダムな浮動小数点数の生成を含む、乱数を生成するためのさまざまなメソッドを提供します。使用方法は次のとおりです。 math/rand 包提供了多种生成随机数的方法,包括生成 [0, 1) 范围内的随机浮点数。以下是如何使用它:

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    // 设置随机数种子
    rand.Seed(time.Now().UnixNano())

    // 生成随机浮点数
    randomFloat := rand.Float64()

    fmt.Println(randomFloat) // 输出:0.3456789012345678
}
ログイン後にコピー

rand.Float64() 会生成一个 [0, 1) 范围内的随机浮点数。

使用 crypto/rand 包

crypto/rand 包用于生成安全随机数,也非常适合生成随机浮点数。以下是它的使用方法:

package main

import (
    "crypto/rand"
    "encoding/binary"
    "fmt"
)

func main() {
    // 生成随机字节数组
    bytes := make([]byte, 8)
    _, err := rand.Read(bytes)
    if err != nil {
        panic(err)
    }

    // 将字节数组转换成浮点数
    bits := binary.BigEndian.Uint64(bytes)
    randomFloat := float64(bits) / float64(1<<64)

    fmt.Println(randomFloat) // 输出:0.3456789012345678
}
ログイン後にコピー

crypto/rand.Read()

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    // 设置随机数种子
    rand.Seed(time.Now().UnixNano())

    // 生成随机折扣(0.01 到 0.5)
    discount := 0.01 + rand.Float64() * 0.49

    fmt.Println(discount) // 输出:0.23456789012345678
}
ログイン後にコピー
rand.Float64() は、範囲 [0, 1) のランダムな浮動小数点数を生成します。

crypto/rand パッケージを使用する

crypto/rand パッケージは安全な乱数を生成するために使用され、ランダムな浮動小数点数の生成にも非常に適しています。使用方法は次のとおりです。

rrreee

crypto/rand.Read() はランダムなバイト配列を生成し、それを float に変換します。 🎜🎜実際的なケース🎜🎜 ランダムな割引を生成する必要がある電子商取引アプリケーションがあるとします。次のコードを使用できます: 🎜rrreee🎜 このコードは、範囲 [0.01, 0.5) のランダムな浮動小数点数を生成します。これは、ランダムな割引として使用できます。 🎜

以上がGolang でランダムな浮動小数点数を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!