>  기사  >  백엔드 개발  >  Golang에서 임의의 부동 소수점 숫자를 생성하는 방법은 무엇입니까?

Golang에서 임의의 부동 소수점 숫자를 생성하는 방법은 무엇입니까?

WBOY
WBOY원래의
2024-06-01 18:27:00492검색

Golang에서 임의의 부동 소수점 숫자를 생성하려면 두 가지 일반적인 방법이 있습니다. math/rand 패키지를 사용하고 rand.Float64()를 호출하여 [0, 1) 범위의 부동 소수점 숫자를 생성합니다. crypto/rand 패키지를 사용하여 임의 바이트 배열을 생성하고 이를 보안 임의성 시나리오에 적합한 부동 소수점 숫자로 변환합니다.

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

Golang에서 임의의 부동 소수점 숫자를 생성하는 방법은 무엇입니까?

Golang에는 부동 소수점 난수를 생성하는 방법이 많이 있습니다. 오늘은 가장 일반적으로 사용되는 두 가지 방법을 소개하겠습니다.

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()는 무작위 바이트 배열을 생성한 다음 이를 부동 소수점으로 변환합니다. 🎜🎜실용 사례🎜🎜임의의 할인을 생성해야 하는 전자상거래 애플리케이션이 있다고 가정해 보겠습니다. 다음 코드를 사용할 수 있습니다: 🎜rrreee🎜이 코드는 [0.01, 0.5) 범위에서 임의의 부동 소수점 숫자를 생성하며, 이는 임의 할인으로 사용할 수 있습니다. 🎜

위 내용은 Golang에서 임의의 부동 소수점 숫자를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.