英文:
Generate crypto Random Integer beetwen min, max values
问题
我正在尝试生成一个在最小值和最大值之间的随机数,但是似乎我在这方面迷失了,有什么问题吗?
package main
import (
"crypto/rand"
"encoding/binary"
"fmt"
)
func genRandNum(min, max int8) int {
var num int8
binary.Read(rand.Reader, binary.LittleEndian, &num)
return int(num*(max-min)+min)
}
func main() {
// 尝试获取一个在-10和10之间的随机数
fmt.Println(genRandNum(-10,10))
}
你的代码看起来没有明显的错误。它使用crypto/rand
包来生成随机数,并使用binary.Read
函数将随机数读取到num
变量中。然后,它将num
变量转换为介于min
和max
之间的整数,并将其返回。
你遇到了什么问题?是否有任何错误消息或输出?
英文:
I trying to generate a random number beetwen a min value and a max value,
but seems I'm lost with this, what is wrong?
package main
import (
"crypto/rand"
"encoding/binary"
"fmt"
)
func genRandNum(min, max int8) int {
var num int8
binary.Read(rand.Reader, binary.LittleEndian, &num)
return int(num*(max-min)+min)
}
func main() {
// trying to get a random number beetwen -10 and 10
fmt.Println(genRandNum(-10,10))
}
答案1
得分: 6
这是翻译好的内容:
func main() {
fmt.Println(genRandNum(-10, 10))
}
func genRandNum(min, max int64) int64 {
// 计算我们将使用的最大值
bg := big.NewInt(max - min)
// 获取介于0和bg之间的big.Int
// 在这个例子中是0到20
n, err := rand.Int(rand.Reader, bg)
if err != nil {
panic(err)
}
// 将n添加到min以支持传入的范围
return n.Int64() + min
}
Go play
英文:
How about this
func main() {
fmt.Println(genRandNum(-10, 10))
}
func genRandNum(min, max int64) int64 {
// calculate the max we will be using
bg := big.NewInt(max - min)
// get big.Int between 0 and bg
// in this case 0 to 20
n, err := rand.Int(rand.Reader, bg)
if err != nil {
panic(err)
}
// add n to min to support the passed in range
return n.Int64() + min
}
Go play
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论