Maison > développement back-end > Golang > le corps du texte

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

WBOY
Libérer: 2024-06-01 18:27:00
original
563 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!

source:php.cn
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