Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk menjana nombor titik terapung rawak di Golang?

Bagaimana untuk menjana nombor titik terapung rawak di Golang?

WBOY
WBOYasal
2024-06-01 18:27:00569semak imbas

Untuk menjana nombor titik terapung rawak di Golang, terdapat dua kaedah biasa: gunakan pakej matematik/rand dan panggil rand.Float64() untuk menjana nombor titik terapung dalam julat [0, 1). Gunakan pakej crypto/rand untuk menjana tatasusunan bait rawak dan tukarkannya kepada nombor titik terapung, yang sesuai untuk senario rawak selamat.

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

Bagaimana untuk menjana nombor titik terapung rawak di Golang?

Terdapat banyak cara untuk menjana nombor titik terapung rawak di Golang Hari ini kami akan memperkenalkan dua kaedah yang paling biasa digunakan.

Gunakan pakej matematik/rand

Pakej math/rand menyediakan pelbagai kaedah untuk menjana nombor rawak, termasuk menjana nombor titik terapung rawak dalam julat [0, 1). Begini cara untuk menggunakannya: 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() menjana nombor titik terapung rawak dalam julat [0, 1).

Gunakan pakej crypto/rand

Pakejcrypto/rand digunakan untuk menjana nombor rawak selamat dan juga sangat sesuai untuk menjana nombor titik terapung rawak. Begini cara untuk menggunakannya:

rrreee

crypto/rand.Read() menjana tatasusunan bait rawak, yang kemudiannya kita tukar kepada apungan. 🎜🎜Kes Praktikal🎜🎜 Katakan kita mempunyai aplikasi e-dagang yang perlu menjana diskaun rawak. Kita boleh menggunakan kod berikut: 🎜rrreee🎜Kod ini akan menjana nombor titik terapung rawak dalam julat [0.01, 0.5), yang boleh digunakan sebagai diskaun rawak. 🎜

Atas ialah kandungan terperinci Bagaimana untuk menjana nombor titik terapung rawak di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn