rand - liangmanlin/gootp GitHub Wiki
当你直接使用原生库 math/rand
时,可能会发生大量锁竞争,推荐的做法是 rand.New(rand.NewSource(time.Now().UnixNano()))
获取一个实例,进行调用。
所有这个库把这一部进行封装。
-
New() Rand
返回一个随机库实例 -
(r Rand) Random(min, max int32) int32
返回一个区间随机数 -
(r Rand) Int32(n int32) int32
返回一个 [0,n) 的随机数 -
(r Rand) Int64(n int64) int64
-
(r Rand) RandomNum(min, max, num int32) []int32
给定一个范围,随机若干个数 -
(r Rand) RandomQSlice(list interface{}, num int32, canRepeated bool) interface{}
从一个slice里面,根据权重 q,随机出value,可以重复的参数比不可重复效率略高,
list := []struct{q int32,data interface{}}
,切记不要修改返回值里面的内容.