mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-30 17:53:21 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			36 lines
		
	
	
		
			740 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			740 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Package rand is used for concurrency safe random number generator.
 | |
| package rand
 | |
| 
 | |
| import (
 | |
| 	"math/rand"
 | |
| 	"sync"
 | |
| )
 | |
| 
 | |
| // Rand is used for concurrency safe random number generator.
 | |
| type Rand struct {
 | |
| 	m sync.Mutex
 | |
| 	r *rand.Rand
 | |
| }
 | |
| 
 | |
| // New returns a new Rand from seed.
 | |
| func New(seed int64) *Rand {
 | |
| 	return &Rand{r: rand.New(rand.NewSource(seed))}
 | |
| }
 | |
| 
 | |
| // Int returns a non-negative pseudo-random int from the Source in Rand.r.
 | |
| func (r *Rand) Int() int {
 | |
| 	r.m.Lock()
 | |
| 	v := r.r.Int()
 | |
| 	r.m.Unlock()
 | |
| 	return v
 | |
| }
 | |
| 
 | |
| // Perm returns, as a slice of n ints, a pseudo-random permutation of the
 | |
| // integers in the half-open interval [0,n) from the Source in Rand.r.
 | |
| func (r *Rand) Perm(n int) []int {
 | |
| 	r.m.Lock()
 | |
| 	v := r.r.Perm(n)
 | |
| 	r.m.Unlock()
 | |
| 	return v
 | |
| }
 |