github.com/nsqio/nsq@v1.3.0/internal/util/rand.go (about) 1 package util 2 3 import ( 4 "math/rand" 5 ) 6 7 func UniqRands(quantity int, maxval int) []int { 8 if maxval < quantity { 9 quantity = maxval 10 } 11 12 intSlice := make([]int, maxval) 13 for i := 0; i < maxval; i++ { 14 intSlice[i] = i 15 } 16 17 for i := 0; i < quantity; i++ { 18 j := rand.Int()%maxval + i 19 // swap 20 intSlice[i], intSlice[j] = intSlice[j], intSlice[i] 21 maxval-- 22 23 } 24 return intSlice[0:quantity] 25 }