Heim > Backend-Entwicklung > Golang > Wie generiert man zufällige Gleitkommazahlen in Golang?

Wie generiert man zufällige Gleitkommazahlen in Golang?

WBOY
Freigeben: 2024-06-01 18:27:00
Original
588 Leute haben es durchsucht

Um zufällige Gleitkommazahlen in Golang zu generieren, gibt es zwei gängige Methoden: Verwenden Sie das Paket math/rand und rufen Sie rand.Float64() auf, um Gleitkommazahlen im Bereich [0, 1) zu generieren. Verwenden Sie das Paket crypto/rand, um ein zufälliges Byte-Array zu generieren und es in eine Gleitkommazahl umzuwandeln, die für sichere Zufälligkeitsszenarien geeignet ist.

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

Wie generiert man zufällige Gleitkommazahlen in Golang?

Es gibt viele Möglichkeiten, in Golang zufällige Gleitkommazahlen zu generieren. Heute stellen wir die beiden am häufigsten verwendeten Methoden vor.

Verwenden Sie das Paket math/rand

Das Paket math/rand bietet eine Vielzahl von Methoden zum Generieren von Zufallszahlen, einschließlich der Generierung zufälliger Gleitkommazahlen im Bereich [0, 1). So verwenden Sie es: 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
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren
rand.Float64() generiert eine zufällige Gleitkommazahl im Bereich [0, 1).

Verwenden Sie das Paket crypto/rand. Das Paket crypto/rand wird zum Generieren sicherer Zufallszahlen verwendet und eignet sich auch sehr gut zum Generieren zufälliger Gleitkommazahlen. So verwenden Sie es:

rrreee

crypto/rand.Read() generiert ein zufälliges Byte-Array, das wir dann in ein Float konvertieren.

Praktischer Fall🎜🎜Angenommen, wir haben eine E-Commerce-Anwendung, die zufällige Rabatte generieren muss. Wir können den folgenden Code verwenden: 🎜rrreee🎜Dieser Code generiert eine zufällige Gleitkommazahl im Bereich [0,01, 0,5), die als zufälliger Rabatt verwendet werden kann. 🎜

Das obige ist der detaillierte Inhalt vonWie generiert man zufällige Gleitkommazahlen in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage