func String(n int) string {
	b := make([]byte, n)
	rng.Lock()
	defer rng.Unlock()
	randomInt63 := rng.rand.Int63()
	remaining := maxAlphanumsPerInt
	for i := 0; i < n; {
		if remaining == 0 {
			randomInt63, remaining = rng.rand.Int63(), maxAlphanumsPerInt
		}
		if idx := int(randomInt63 & alphanumsIdxMask); idx < len(alphanums) {
			b[i] = alphanums[idx]
			i++
		}
		randomInt63 >>= alphanumsIdxBits
		remaining--
	}
	return string(b)
}
String generates a random alphanumeric string, without vowels, which is n
characters long.  This will panic if n is less than zero.
How the random string is created:
- we generate random int63's
- from each int63, we are extracting multiple random letters by bit-shifting and masking
- if some index is out of range of alphanums we neglect it (unlikely to happen multiple times in a row)
package rand
import (
	"math/rand"
	"sync"
	"time"
)
var rng = struct {
	sync.Mutex
	rand *rand.Rand
}{
	rand: rand.New(rand.NewSource(time.Now().UTC().UnixNano())),
}
func Intn(max int) int {
	rng.Lock()
	defer rng.Unlock()
	return rng.rand.Intn(max)
}
func IntnRange(min, max int) int {
	rng.Lock()
	defer rng.Unlock()
	return rng.rand.Intn(max-min) + min
}
func Int63nRange(min, max int64) int64 {
	rng.Lock()
	defer rng.Unlock()
	return rng.rand.Int63n(max-min) + min
}
func Seed(seed int64) {
	rng.Lock()
	defer rng.Unlock()
	rng.rand = rand.New(rand.NewSource(seed))
}
func Perm(n int) []int {
	rng.Lock()
	defer rng.Unlock()
	return rng.rand.Perm(n)
}
const (
	alphanums = "bcdfghjklmnpqrstvwxz2456789"
	alphanumsIdxBits = 5
	alphanumsIdxMask = 1<<alphanumsIdxBits - 1
	maxAlphanumsPerInt = 63 / alphanumsIdxBits
)