Verzeichnis suchen
archive archive/tar archive/zip bufio bufio(缓存) builtin builtin(内置包) bytes bytes(包字节) compress compress/bzip2(压缩/bzip2) compress/flate(压缩/flate) compress/gzip(压缩/gzip) compress/lzw(压缩/lzw) compress/zlib(压缩/zlib) container container/heap(容器数据结构heap) container/list(容器数据结构list) container/ring(容器数据结构ring) context context(上下文) crypto crypto(加密) crypto/aes(加密/aes) crypto/cipher(加密/cipher) crypto/des(加密/des) crypto/dsa(加密/dsa) crypto/ecdsa(加密/ecdsa) crypto/elliptic(加密/elliptic) crypto/hmac(加密/hmac) crypto/md5(加密/md5) crypto/rand(加密/rand) crypto/rc4(加密/rc4) crypto/rsa(加密/rsa) crypto/sha1(加密/sha1) crypto/sha256(加密/sha256) crypto/sha512(加密/sha512) crypto/subtle(加密/subtle) crypto/tls(加密/tls) crypto/x509(加密/x509) crypto/x509/pkix(加密/x509/pkix) database database/sql(数据库/sql) database/sql/driver(数据库/sql/driver) debug debug/dwarf(调试/dwarf) debug/elf(调试/elf) debug/gosym(调试/gosym) debug/macho(调试/macho) debug/pe(调试/pe) debug/plan9obj(调试/plan9obj) encoding encoding(编码) encoding/ascii85(编码/ascii85) encoding/asn1(编码/asn1) encoding/base32(编码/base32) encoding/base64(编码/base64) encoding/binary(编码/binary) encoding/csv(编码/csv) encoding/gob(编码/gob) encoding/hex(编码/hex) encoding/json(编码/json) encoding/pem(编码/pem) encoding/xml(编码/xml) errors errors(错误) expvar expvar flag flag(命令行参数解析flag包) fmt fmt go go/ast(抽象语法树) go/build go/constant(常量) go/doc(文档) go/format(格式) go/importer go/parser go/printer go/scanner(扫描仪) go/token(令牌) go/types(类型) hash hash(散列) hash/adler32 hash/crc32 hash/crc64 hash/fnv html html html/template(模板) image image(图像) image/color(颜色) image/color/palette(调色板) image/draw(绘图) image/gif image/jpeg image/png index index/suffixarray io io io/ioutil log log log/syslog(日志系统) math math math/big math/big math/bits math/bits math/cmplx math/cmplx math/rand math/rand mime mime mime/multipart(多部分) mime/quotedprintable net net net/http net/http net/http/cgi net/http/cookiejar net/http/fcgi net/http/httptest net/http/httptrace net/http/httputil net/http/internal net/http/pprof net/mail net/mail net/rpc net/rpc net/rpc/jsonrpc net/smtp net/smtp net/textproto net/textproto net/url net/url os os os/exec os/signal os/user path path path/filepath(文件路径) plugin plugin(插件) reflect reflect(反射) regexp regexp(正则表达式) regexp/syntax runtime runtime(运行时) runtime/debug(调试) runtime/internal/sys runtime/pprof runtime/race(竞争) runtime/trace(执行追踪器) sort sort(排序算法) strconv strconv(转换) strings strings(字符串) sync sync(同步) sync/atomic(原子操作) syscall syscall(系统调用) testing testing(测试) testing/iotest testing/quick text text/scanner(扫描文本) text/tabwriter text/template(定义模板) text/template/parse time time(时间戳) unicode unicode unicode/utf16 unicode/utf8 unsafe unsafe
Figuren

  • import "math/rand"

  • 概观

  • 索引

  • 示例

概观

打包rand 执行伪随机数生成器。

随机数由一个 Source 生成。顶级函数(如 Float64 和 Int )使用默认的共享源,每次运行程序时都会产生确定性的值序列。如果每次运行都需要不同的行为,请使用 Seed 函数初始化默认 Source。默认的 Source 对于多个 goroutine 并发使用是安全的,但由 NewSource 创建的源不是。

对于适合安全敏感工作的随机数字,请参阅 crypto / rand 软件包。

示例

package mainimport ("fmt""math/rand")func main() {
	rand.Seed(42) // Try changing this number!
	answers := []string{"It is certain","It is decidedly so","Without a doubt","Yes definitely","You may rely on it","As I see it yes","Most likely","Outlook good","Yes","Signs point to yes","Reply hazy try again","Ask again later","Better not tell you now","Cannot predict now","Concentrate and ask again","Don't count on it","My reply is no","My sources say no","Outlook not so good","Very doubtful",}
	fmt.Println("Magic 8-Ball says:", answers[rand.Intn(len(answers))])}

示例(Rand)

此示例显示* Rand上每种方法的使用。全局功能的使用是一样的,没有接收器。

package mainimport ("fmt""math/rand""os""text/tabwriter")func main() {// Create and seed the generator.// Typically a non-fixed seed should be used, such as time.Now().UnixNano().// Using a fixed seed will produce the same output on every run.
	r := rand.New(rand.NewSource(99))// The tabwriter here helps us generate aligned output.
	w := tabwriter.NewWriter(os.Stdout, 1, 1, 1, ' ', 0)
	defer w.Flush()
	show := func(name string, v1, v2, v3 interface{}) {
		fmt.Fprintf(w, "%s\t%v\t%v\t%v\n", name, v1, v2, v3)}// Float32 and Float64 values are in [0, 1).show("Float32", r.Float32(), r.Float32(), r.Float32())show("Float64", r.Float64(), r.Float64(), r.Float64())// ExpFloat64 values have an average of 1 but decay exponentially.show("ExpFloat64", r.ExpFloat64(), r.ExpFloat64(), r.ExpFloat64())// NormFloat64 values have an average of 0 and a standard deviation of 1.show("NormFloat64", r.NormFloat64(), r.NormFloat64(), r.NormFloat64())// Int31, Int63, and Uint32 generate values of the given width.// The Int method (not shown) is like either Int31 or Int63// depending on the size of 'int'.show("Int31", r.Int31(), r.Int31(), r.Int31())show("Int63", r.Int63(), r.Int63(), r.Int63())show("Uint32", r.Uint32(), r.Uint32(), r.Uint32())// Intn, Int31n, and Int63n limit their output to be < n.// They do so more carefully than using r.Int()%n.show("Intn(10)", r.Intn(10), r.Intn(10), r.Intn(10))show("Int31n(10)", r.Int31n(10), r.Int31n(10), r.Int31n(10))show("Int63n(10)", r.Int63n(10), r.Int63n(10), r.Int63n(10))// Perm generates a random permutation of the numbers [0, n).show("Perm", r.Perm(5), r.Perm(5), r.Perm(5))}

索引

  • func ExpFloat64() float64

  • func Float32() float32

  • func Float64() float64

  • func Int() int

  • func Int31() int32

  • func Int31n(n int32) int32

  • func Int63() int64

  • func Int63n(n int64) int64

  • func Intn(n int) int

  • func NormFloat64() float64

  • func Perm(n int) []int

  • func Read(p []byte) (n int, err error)

  • func Seed(seed int64)

  • func Uint32() uint32

  • func Uint64() uint64

  • type Rand

  • func New(src Source) *Rand

  • func (r *Rand) ExpFloat64() float64

  • func (r *Rand) Float32() float32

  • func (r *Rand) Float64() float64

  • func (r *Rand) Int() int

  • func (r *Rand) Int31() int32

  • func (r *Rand) Int31n(n int32) int32

  • func (r *Rand) Int63() int64

  • func (r *Rand) Int63n(n int64) int64

  • func (r *Rand) Intn(n int) int

  • func (r *Rand) NormFloat64() float64

  • func (r *Rand) Perm(n int) []int

  • func (r *Rand) Read(p []byte) (n int, err error)

  • func (r *Rand) Seed(seed int64)

  • func (r *Rand) Uint32() uint32

  • func (r *Rand) Uint64() uint64

  • type Source

  • func NewSource(seed int64) Source

  • type Source64

  • type Zipf

  • func NewZipf(r *Rand, s float64, v float64, imax uint64) *Zipf

  • func (z *Zipf) Uint64() uint64

示例

Package Perm Package (Rand)

打包文件

exp.go normal.go rand.go rng.go zipf.go

func ExpFloat64

func ExpFloat64() float64

ExpFloat64 返回指数分布的 float64 ,其范围为 (0, +math.MaxFloat64],其指数分布的速率参数(lambda)为1,平均值为默认 Source 的 1 / lambda(1)。不同的速率参数,呼叫者可以使用以下方式调整输出:

sample = ExpFloat64() / desiredRateParameter

func Float32

func Float32() float32

Float32 以默认 Source 的形式返回一个作为 float32 的 [0.0,1.0) 中的伪随机数。

func Float64

func Float64() float64

Float64 以默认 Source 的形式返回,作为 float64,一个 [0.0,1.0) 中的伪随机数字。

func Int

func Int() int

Int 从默认的 Source 返回一个非负的伪随机 int。

func Int31

func Int31() int32

Int31 从默认 Source 返回一个非负的伪随机31位整数作为 int32。

func Int31n

func Int31n(n int32) int32

Int31n 以默认 Source 的形式返回 [0,n)中的非负伪随机数,作为 int32。如果n <= 0,它会发生混乱。

func Int63

func Int63() int64

Int63 从默认的 Source 返回一个非负的伪随机的63位整数作为 int64。

func Int63n

func Int63n(n int64) int64

Int63n 以 int64 形式返回来自默认 Source 的 [0,n] 中的非负伪随机数。如果n <= 0,它会发生混乱。

func Intn

func Intn(n int) int

Intn 以 int 形式返回来自默认 Source 的 [0,n] 中的非负伪随机数。如果 n <= 0,它会发生混乱。

func NormFloat64

func NormFloat64() float64

NormFloat64 从默认的 Source 返回正态分布的 float64,范围为-math.MaxFloat64,+ math.MaxFloat64,标准正态分布(mean = 0,stddev = 1)。要产生不同的正态分布,调用者可以使用以下方式调整输出:

sample = NormFloat64() * desiredStdDev + desiredMean

func Perm

func Perm(n int) []int

Perm 以默认 Source 的形式返回整数 [0,n) 的伪随机置换。

示例

package mainimport ("fmt""math/rand")func main() {for _, value := range rand.Perm(3) {
		fmt.Println(value)}}

func Read

func Read(p []byte) (n int, err error)

Read 从默认 Source 生成 len(p) 个随机字节,并将它们写入 p。它总是返回 len(p) 和一个零错误。与 Rand.Read 方法不同,读取对于并发使用是安全的。

func Seed

func Seed(seed int64)

Seed 使用提供的种子值将默认 Source 初始化为确定性状态。如果种子没有被调用,那么生成器的行为就像种子(1)播种一样。具有相同余数的种子值除以2 ^ 31-1会生成相同的伪随机序列。与 Rand.Seed 方法不同,种子对于并发使用是安全的。

func Uint32

func Uint32() uint32

Uint32从默认的 Source 返回一个伪随机的32位值作为 uint32。

func Uint64

func Uint64() uint64

Uint64 从默认的 Source 返回一个伪随机的64位值作为 uint64。

type Rand

Rand 是随机数字的来源。

type Rand struct {        // contains filtered or unexported fields}

func New

func New(src Source) *Rand

New 返回一个新的Rand,它使用 src 中的随机值生成其他随机值。

func (*Rand) ExpFloat64

func (r *Rand) ExpFloat64() float64

ExpFloat64 返回指数分布的 float64,其范围为 (0, +math.MaxFloat64] ,其指数分布的速率参数(lambda)为1,平均值为 1 / lambda(1)。为了生成具有不同速率参数的分布,呼叫者可以使用以下方式调整输出:

sample = ExpFloat64() / desiredRateParameter

func (*Rand) Float32

func (r *Rand) Float32() float32

Float32 作为 float32 返回 [0.0,1.0) 中的伪随机数。

func (*Rand) Float64

func (r *Rand) Float64() float64

Float64 作为 float64 返回 [0.0,1.0) 中的伪随机数。

func (*Rand) Int

func (r *Rand) Int() int

Int 返回一个非负的伪随机 int。

func (*Rand) Int31

func (r *Rand) Int31() int32

Int31 以 int32 形式返回一个非负的伪随机31位整数。

func (*Rand) Int31n

func (r *Rand) Int31n(n int32) int32

Int31n 以 int32 形式返回 [0,n)中的非负伪随机数。如果 n <= 0,它会发生混乱。

func (*Rand) Int63

func (r *Rand) Int63() int64

Int63 以 int64 的形式返回一个非负的伪随机63位整数。

func (*Rand) Int63n

func (r *Rand) Int63n(n int64) int64

Int63n 以 int64 的形式返回 [0,n)中的非负伪随机数。如果 n <= 0,它会发生混乱。

func (*Rand) Intn

func (r *Rand) Intn(n int) int

Intn 返回 int [0,n] 中的非负伪随机数。如果 n <= 0,它会发生混乱。

func (*Rand) NormFloat64

func (r *Rand) NormFloat64() float64

NormFloat64 返回正态分布的 float64,范围为-math.MaxFloat64,+ math.MaxFloat64,标准正态分布(mean = 0,stddev = 1)。要产生不同的正态分布,呼叫者可以使用以下方式调整输出:

sample = NormFloat64() * desiredStdDev + desiredMean

func (*Rand) Perm

func (r *Rand) Perm(n int) []int

Perm作为一个 n 分片返回一个整数 [0,n)的伪随机置换。

func (*Rand) Read

func (r *Rand) Read(p []byte) (n int, err error)

Read 生成 len(p)个随机字节并将它们写入p。它总是返回 len(p)和一个零错误。阅读不应与任何其他 Rand 方法同时调用。

func (*Rand) Seed

func (r *Rand) Seed(seed int64)

Seed 使用提供的种子值将发生器初始化为确定性状态。Seed 不应该与任何其他 Rand 方法同时调用。

func (*Rand) Uint32

func (r *Rand) Uint32() uint32

Uint32 返回一个伪随机的32位值作为 uint32。

func (*Rand) Uint64

func (r *Rand) Uint64() uint64

Uint64 返回一个伪随机的64位值作为 uint64。

type Source

源表示均匀分布的伪随机 int64 值的来源,范围 [0,1 << 63)。

type Source interface {        Int63() int64        Seed(seed int64)}

func NewSource

func NewSource(seed int64) Source

NewSource 返回一个新的伪随机源,并给定值。与顶级函数使用的默认源不同,此源对于多个 goroutine 并发使用并不安全。

type Source64

Source64是一个Source,它也可以直接在[0,1 << 64)范围内生成均匀分布的伪随机uint64值。如果 Rand r 的底层 Source 实现Source64,则 r.Uint64 将一次调用的结果返回给 s.Uint64,而不是对 s.Int63进行两次调用。

type Source64 interface {
        Source        Uint64() uint64}

type Zipf

Zipf 生成 Zipf 分布式变量。

type Zipf struct {        // contains filtered or unexported fields}

func NewZipf

func NewZipf(r *Rand, s float64, v float64, imax uint64) *Zipf

NewZipf 返回一个 Zipf 变量生成器。生成器生成值 k∈0,imax,使得P(k)与(v + k)**(-s)成比例。要求:s> 1且v> = 1。

func (*Zipf) Uint64

func (z *Zipf) Uint64() uint64

Uint64 返回从 Zipf 对象描述的 Zipf 分布中绘制的值。

Vorheriger Artikel: Nächster Artikel: