我试图在围棋中生成随机数(整数),但无济于事.我在crypto/rand中找到了rand包,这似乎就是我想要的,但是我不能从文档中看出如何使用它.这就是我现在正在try 的:

    b := []byte{}
    something, err := rand.Read(b)
    fmt.Printf("something = %v\n", something)
    fmt.Printf("err = %v\n", err)

但不幸的是,这总是会产生:

    something = 0
    err = <nil>

有没有办法解决这个问题,让它真正生成随机数?或者,有没有办法设置它生成的随机数的上限?

推荐答案

crypto/rand只提供随机数据流的二进制,但是您可以使用encoding/binary从其中读取整数:

package main

import "encoding/binary"
import "crypto/rand"

func main() {
    var n int32
    binary.Read(rand.Reader, binary.LittleEndian, &n)
    println(n)
}

Go相关问答推荐

如何使用go从map.dbf map.prj map.shp map.shx中的任何文件中了解层名称

VS代码,Golang格式顽固的情况与switch / case

GitHub发布Golang子模块

禁用Golang中的终端

在不耗尽资源的情况下处理S3文件下载

JetBrains Goland,禁用突出显示测试文件

Makefilego version和read命令

Cypher 查找(多个)最低 node

以编程方式取消 pyspark dataproc 批处理作业(job)

xml.Unmarshal 不支持的类型 struct

Golang 到 wasm 编译使用 tinygo.使用 wasmtime 执行

最长连续重复的字符golang

Go gmail api 快速入门导致本地主机拒绝连接 ERR_CONNECTION_REFUSED

如果服务器在客户端的 gRPC 中不可用,则等待的方法

当 git clone 工作时,Go mod tidy 在私有存储库上失败

如何在gorm中处理多个查询

如何在眼镜蛇(golang)中将标志作为参数传递?

如何从字符串中删除多个换行符`\n`但只保留一个?

防止在 Go 公用文件夹中列出目录

golangci-lint 的 GitHub 操作失败,无法加载 fmt