Home  >  Article  >  Backend Development  >  How to generate random floating point numbers in Golang?

How to generate random floating point numbers in Golang?

WBOY
WBOYOriginal
2024-06-01 18:27:00566browse

There are two common methods to generate random floating point numbers in Golang: use the math/rand package and call rand.Float64() to generate floating point numbers in the range [0, 1). Use the crypto/rand package to generate a random byte array and convert it to a floating point number, which is suitable for secure randomness scenarios.

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

How to generate random floating point numbers in Golang?

There are many ways to generate random floating point numbers in Golang. Today we will introduce the two most commonly used methods.

Use the math/rand package

math/rand The package provides a variety of methods for generating random numbers, including generating random floating point numbers in the range [0, 1) . Here's how to use it:

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    // 设置随机数种子
    rand.Seed(time.Now().UnixNano())

    // 生成随机浮点数
    randomFloat := rand.Float64()

    fmt.Println(randomFloat) // 输出:0.3456789012345678
}

rand.Float64() will generate a random floating point number in the range [0, 1).

Use crypto/rand package

crypto/rand package is used to generate secure random numbers and is also very suitable for generating random floating point numbers. Here's how to use it:

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() will generate a random byte array, which we then convert to a float.

Practical Case

Suppose we have an e-commerce application that needs to generate random discounts. We can use the following code:

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
}

This code will generate a random floating point number in the range [0.01, 0.5), which can be used as a random discount.

The above is the detailed content of How to generate random floating point numbers in Golang?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn