Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Random 生成加密随机整数最小值、最大值_Random_Go - Fatal编程技术网

Random 生成加密随机整数最小值、最大值

Random 生成加密随机整数最小值、最大值,random,go,Random,Go,我试图生成一个随机数,一个最小值和一个最大值, 但我似乎对这件事迷茫了,怎么了 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*(

我试图生成一个随机数,一个最小值和一个最大值, 但我似乎对这件事迷茫了,怎么了

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))
}
这个怎么样

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

@Jzala我在代码中添加了一些注释。你明白了吗?我想这里有个错误。rand.Intrand.Reader,bg将生成介于0和bg-1之间的数字,因此getRandNum永远不会返回10。您可以使用bg:=big.NewIntmax-min+1@siritinga,你是对的,但只有在你想包含上限的情况下。即使你采用了你的方法,在大多数情况下,它也会使较低的值稍微频繁一些。jmaloney使用的rand.Int函数是正确的方法;这就是它的用途。看看他们是如何解决的。