How to generate random floating point numbers in Golang?

WBOY
Release: 2024-06-01 18:27:00
Original
535 people have browsed it

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
}
Copy after login

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
}
Copy after login

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
}
Copy after login

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!

source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!