生成随机数和随机字符串

package main

import (
   "fmt"
   "math/rand"
   "time"
)

// RandInt
// @description 生成一个[min, max]范围内在随机整数
// @param min int 最小值(含)
// @param max int 最大值(含)
// @return int 随机整数
func RandInt(min int, max int) int {
   return rand.New(rand.NewSource(time.Now().UnixNano())).Intn(max-min+1) + min
}

// RandString
// @description 生成一个指定长度的随机字符串
// @param length int 字符串长度
// @return string 随机字符串
func RandString(length int) string {
   letters := "abcdefghijklmnopqrstuvwxyz"

   bytes := []byte(letters)
   var randString []byte
   random := rand.New(rand.NewSource(time.Now().UnixNano()))
   for i := 0; i < length; i++ {
      randString = append(randString, bytes[random.Intn(len(bytes))])
   }

   return string(randString)
}

// RandSlice
// @description 随机获取切片元素
// @param slice []any 切片
// @return any 切片元素
func RandSlice(slice []any) any {
   return slice[rand.New(rand.NewSource(time.Now().UnixNano())).Intn(len(slice))]
}

func main() {
   //========== 生成随机整数 ==========//
   for i := 0; i < 5; i++ {
      fmt.Println(RandInt(10000, 99999))
   }
   // 21395
   // 53182
   // 45425
   // 91333
   // 27154

   //========== 生成随机字符串 ==========//
   for i := 0; i < 5; i++ {
      fmt.Println(RandString(32))
   }
   // rioznncrbohxbegztsbhqzrjjiudefyh
   // rqyutkjwsemhipjzoidoodavmlythtcu
   // yykjqmpodzipwukpkdofhdroiichkxyq
   // abprwsvsnpwaonadkgnkndeoidndcxep
   // vqfudbzcdwgjqmjszbpglyjffvnydxgt

   //========== 随机获取切片元素 ==========//
   slice := []any{"刘一", "陈二", "张三", "李四", "王五", "赵六", "孙七", "周八", "吴九", "郑十"}
   for i := 0; i < 5; i++ {
      fmt.Println(RandSlice(slice))
   }
   // 陈二
   // 郑十
   // 李四
   // 陈二
   // 孙七
}

Copyright © 2024 码农人生. All Rights Reserved