golang取两个数字之间的随机数

别人说我名字很长 · 2015-11-09 21:00:01

为什么不简单点算呢?

package main

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

func main() {
    fmt.Println(RandInt64(100, 101))
    fmt.Println(RandInt64(100, 200))
}

func RandInt64(min, max int64) int64 {
    rand.Seed(time.Now().UnixNano())
    return min + rand.Int63n(max-min)
}
#3
更多评论
qkb_75_go
琴为心声

工作关系,个人对 int64 和 math/big 用得比较少。 高性能FPGA开发,16进制数位宽都很大,主数据通道的位宽有512bit, 别的语言根本没有想象到有这种东西吧。 最后,也只能是用 字符串 实现呀。

#1

代码测试后发现个问题。

修改如下:

func RandInt64(min,max int64) int64{
    maxBigInt:=big.NewInt(max)
    i,_:=rand.Int(rand.Reader,maxBigInt)
    iInt64 := i.Int64()
    if iInt64 < min{
        iInt64 = RandInt64(min,max)//应该用参数接一下
    }
    return iInt64
}
#2