Golang 在指定区间随机生成不重复的指定个数的数字

Jackey Golang 7,016 次浏览 没有评论
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "math/rand"
  6. "time"
  7. )
  8.  
  9. //生成count个[start,end)结束的不重复的随机数
  10. func GenerateRandomNumber(start int, end int, count int) []int {
  11. //范围检查
  12. if end < start || (end-start) < count {
  13. return nil
  14. }
  15.  
  16. //存放结果的slice
  17. nums := make([]int, 0)
  18. //随机数生成器,加入时间戳保证每次生成的随机数不一样
  19. r := rand.New(rand.NewSource(time.Now().UnixNano()))
  20. for len(nums) < count {
  21. //生成随机数
  22. num := r.Intn((end - start)) + start
  23.  
  24. //查重
  25. exist := false
  26. for _, v := range nums {
  27. if v == num {
  28. exist = true
  29. break
  30. }
  31. }
  32.  
  33. if !exist {
  34. nums = append(nums, num)
  35. }
  36. }
  37.  
  38. return nums
  39. }
  40.  
  41. func main() {
  42. fmt.Println(GenerateRandomNumber(1,30,5))
  43. }

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Go