3 回答
TA贡献1906条经验 获得超10个赞
包兰特
import "math/rand"
功能读取
func Read(p []byte) (n int, err error)
Read 从默认 Source 生成 len(p) 个随机字节并将它们写入 p。它总是返回 len(p) 和一个 nil 错误。
函数(*Rand) 读取
func (r *Rand) Read(p []byte) (n int, err error)
Read 生成 len(p) 个随机字节并将它们写入 p。它总是返回 len(p) 和一个 nil 错误。
例如,
package main
import (
"math/rand"
"fmt"
)
func main() {
token := make([]byte, 4)
rand.Read(token)
fmt.Println(token)
}
输出:
[187 163 35 30]
TA贡献1840条经验 获得超5个赞
Go 1.6 向math/rand包中添加了一个新函数:
func Read(p []byte) (n int, err error)
它byte用随机数据填充传递的切片。使用这个rand.Read():
token := make([]byte, 4)
if _, err := rand.Read(token); err != nil {
// Handle err
}
fmt.Println(token)
rand.Read()有 2 个返回值:“读取”字节数和一个(可选)error。这是为了符合通用io.Reader接口,但文档rand.Read()状态(尽管有签名)它永远不会实际返回非nil错误,因此我们可以省略检查它,这将其简化为:
token := make([]byte, 4)
rand.Read(token)
fmt.Println(token)
rand.Seed()在使用math/rand包之前不要忘记调用以正确初始化它,例如:
rand.Seed(time.Now().UnixNano())
注意:在 Go 1.6 之前没有math/rand.Read()函数,但是有(现在仍然是)一个crypto/rand.Read()函数,但是这个crypto/rand包实现了一个加密安全的伪随机数生成器,所以它比math/rand.
TA贡献1864条经验 获得超2个赞
Go 1.6 向math/rand包中添加了一个新函数:
func Read(p []byte) (n int, err error)
它byte用随机数据填充传递的切片。使用这个rand.Read():
token := make([]byte, 4)
if _, err := rand.Read(token); err != nil {
// Handle err
}
fmt.Println(token)
rand.Read()有 2 个返回值:“读取”字节数和一个(可选)error。这是为了符合通用io.Reader接口,但文档rand.Read()状态(尽管有签名)它永远不会实际返回非nil错误,因此我们可以省略检查它,这将其简化为:
token := make([]byte, 4)
rand.Read(token)
fmt.Println(token)
rand.Seed()在使用math/rand包之前不要忘记调用以正确初始化它,例如:
rand.Seed(time.Now().UnixNano())
注意:在 Go 1.6 之前没有math/rand.Read()函数,但是有(现在仍然是)一个crypto/rand.Read()函数,但是这个crypto/rand包实现了一个加密安全的伪随机数生成器,所以它比math/rand.
- 3 回答
- 0 关注
- 517 浏览
添加回答
举报