rand

"crypto/rand"实现了伪随机数生成

变量

Reader是一个全局共享的强伪随机数生成,

在Linux系统中,如果/dev/urandom可用,那么将会采用getrandom(2)的方式实现Reader

在OpenBSD系统中,采用的是getentropy方式实现Reader

在类unix系统中,采用的是/dev/urandom方式实现Reader

在Windows系统中,是通过调用CryGenRandomAPI实现的

var Reader io.Reader

函数

Int限定上限,返回一个随机数

func Int(rand io.Reader, max *big,Int)(n *big.Int, err error)
func main(){
    b := big.NewInt(10)
    a, err := rand.Int(rand.Reader, b)

    if err != nil {
        fmt.Println(err.Error())
    }
    fmt.Println(a)
}

如上只会在[0,10]之间产生随机数,如果n < 0,将会产生一个panic

Prime返回一个数字

func Prime(rand io.Reader, bits int)(p *big.Int, err error)

Read是一个辅助函数,能够使得使用Reader.Read的时候使用的是io.ReadFUll,对于返回结果而言,只有当err != nil的时候,返回的是n ==len(b)

func main(){
    c := 10
    b := make([]byte, c)
    _, err := rand.Read(b)
    if err != nil {
        fmt.Println("error:", err)
        return
    }
    fmt.Println(bytes.Equal(b, make([]byte, c))) //false
}

results matching ""

    No results matching ""