【问题标题】:Is there Go function comparable to boost::uniform_int?是否有可以与 boost::uniform_int 相媲美的 Go 函数?
【发布时间】:2020-01-08 19:58:38
【问题描述】:

我正在将一个工具从 C++ 翻译成 Go。 C++ 工具使用 boost::random 库并调用 boost::uniform_int。我想知道 Go 中是否有类似的“开箱即用”功能。如果没有,我需要一些帮助来构建自己的。

我梳理了 Go 的 math/rand 包,但没有发现任何明显等价的东西。

这里是 a link 用于 boost 的文档

这是 C++ 工具中的函数声明/调用

boost::uniform_int<unsigned int> randomDistOp(1, 100);

【问题讨论】:

标签: c++ go random distribution


【解决方案1】:

Intn 方法应该可以满足您的需求。

package main

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

func main() {
    r := rand.New(rand.NewSource(time.Now().UnixNano()))
    fmt.Println(1 + r.Intn(100))
}

这提供了来自 [0, n) 的均匀随机整数。要设置不同的下限,只需将其添加到结果中即可。需要说明的是,Intn(100) 将返回不超过 100 的数字,因此加 1 将为您提供从 1 到 100 的正确范围。

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 2019-06-02
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    相关资源
    最近更新 更多