Maison > développement back-end > Golang > Comment générer des nombres aléatoires à virgule flottante dans Golang ?

Comment générer des nombres aléatoires à virgule flottante dans Golang ?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-06-01 18:27:00
original
621 Les gens l'ont consulté

Pour générer des nombres à virgule flottante aléatoires dans Golang, il existe deux méthodes courantes : utilisez le package math/rand et appelez rand.Float64() pour générer des nombres à virgule flottante dans la plage [0, 1). Utilisez le package crypto/rand pour générer un tableau d'octets aléatoires et le convertir en un nombre à virgule flottante, ce qui convient aux scénarios aléatoires sécurisés.

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

Comment générer des nombres aléatoires à virgule flottante dans Golang ?

Il existe de nombreuses façons de générer des nombres à virgule flottante aléatoires dans Golang. Aujourd'hui, nous présenterons les deux méthodes les plus couramment utilisées.

Utilisez le package math/rand

Le package math/rand fournit une variété de méthodes pour générer des nombres aléatoires, y compris la génération de nombres à virgule flottante aléatoires dans la plage [0, 1). Voici comment l'utiliser : 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
}
Copier après la connexion

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
}
Copier après la connexion

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
}
Copier après la connexion
rand.Float64() génère un nombre aléatoire à virgule flottante dans la plage [0, 1).

Utiliser le package crypto/rand

Le package crypto/rand est utilisé pour générer des nombres aléatoires sécurisés et est également très approprié pour générer des nombres à virgule flottante aléatoires. Voici comment l'utiliser :

rrreee

crypto/rand.Read() génère un tableau d'octets aléatoires, que nous convertissons ensuite en flottant. 🎜🎜Cas pratique🎜🎜Supposons que nous ayons une application de commerce électronique qui doit générer des remises aléatoires. Nous pouvons utiliser le code suivant : 🎜rrreee🎜Ce code générera un nombre aléatoire à virgule flottante dans la plage [0,01, 0,5), qui pourra être utilisé comme une remise aléatoire. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal