doucong6884 2014-10-02 02:02
浏览 52
已采纳

在最小值和最大值之间生成加密随机整数

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条回答 默认 最新

  • douluan5523 2014-10-02 02:42
    关注

    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog