55 lines
865 B
Go
55 lines
865 B
Go
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/Pallinder/go-randomdata"
|
|
)
|
|
|
|
func GenValidateCode(width int) string {
|
|
numeric := [10]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
|
|
r := len(numeric)
|
|
rand.Seed(time.Now().UnixNano())
|
|
|
|
var sb strings.Builder
|
|
for i := 0; i < width; i++ {
|
|
fmt.Fprintf(&sb, "%d", numeric[rand.Intn(r)])
|
|
}
|
|
return sb.String()
|
|
}
|
|
|
|
// 随机一组随机数
|
|
// number >= start and < end num 随机数个数
|
|
func Numbers(start, end, num int) []int {
|
|
if end-start < 0 || num > (end-start) {
|
|
return nil
|
|
}
|
|
|
|
if end-start == 1 {
|
|
n := randomdata.Number(start, end)
|
|
return []int{n}
|
|
}
|
|
|
|
var i int
|
|
arr := make([]int, num)
|
|
boo := make(map[int]int)
|
|
for {
|
|
if i == num {
|
|
break
|
|
}
|
|
|
|
n := randomdata.Number(start, end)
|
|
if _, ok := boo[n]; ok {
|
|
continue
|
|
}
|
|
boo[n] = i
|
|
arr[i] = n
|
|
i++
|
|
}
|
|
|
|
return arr
|
|
}
|