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{}},切记不要修改返回值里面的内容.