func (r *LockedRand) Float32() float32 {
	r.mu.Lock()
	v := r.rand.Float32()
	r.mu.Unlock()
	return v
}
Float32 calls r.Rand.Float32 and is safe for concurrent use.
package randutil
import (
	"math/rand"
	"sync"
)
type LockedRand struct {
	mu   *sync.Mutex
	rand *rand.Rand
}
func (r *LockedRand) Read(b []byte) (int, error) {
	r.mu.Lock()
	n, err := r.rand.Read(b)
	r.mu.Unlock()
	return n, err
}
func (r *LockedRand) Int31() int32 {
	r.mu.Lock()
	v := r.rand.Int31()
	r.mu.Unlock()
	return v
}
func (r *LockedRand) Int63() int64 {
	r.mu.Lock()
	v := r.rand.Int63()
	r.mu.Unlock()
	return v
}
func (r *LockedRand) Intn(n int) int {
	r.mu.Lock()
	v := r.rand.Intn(n)
	r.mu.Unlock()
	return v
}
func (r *LockedRand) Uint32() uint32 {
	r.mu.Lock()
	v := r.rand.Uint32()
	r.mu.Unlock()
	return v
}