package util

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

const (
	CharsNum     = "0123456789"
	CharsLower   = "abcdefghijklmnopqrstuvwxyz"
	CharsUpper   = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	CharsDefault = CharsNum + CharsLower + CharsUpper
)

func init() {
	rand.Seed(time.Now().UnixNano())
}

func RandStr(size int, optCharset ...string) string {
	chars := CharsDefault
	if set := strings.Join(optCharset, ""); len(set) > 0 {
		chars = set
	}
	bs := make([]byte, size)
	for i := range bs {
		bs[i] = chars[rand.Intn(len(chars))]
	}
	return string(bs)
}
