github.com/apernet/quic-go@v0.43.1-0.20240515053213-5e9e635fd9f0/internal/utils/rand_test.go (about)

     1  package utils
     2  
     3  import (
     4  	. "github.com/onsi/ginkgo/v2"
     5  	. "github.com/onsi/gomega"
     6  )
     7  
     8  var _ = Describe("Rand", func() {
     9  	It("generates random numbers", func() {
    10  		const (
    11  			num = 1000
    12  			max = 12345678
    13  		)
    14  
    15  		var values [num]int32
    16  		var r Rand
    17  		for i := 0; i < num; i++ {
    18  			v := r.Int31n(max)
    19  			Expect(v).To(And(
    20  				BeNumerically(">=", 0),
    21  				BeNumerically("<", max),
    22  			))
    23  			values[i] = v
    24  		}
    25  
    26  		var sum uint64
    27  		for _, n := range values {
    28  			sum += uint64(n)
    29  		}
    30  		Expect(float64(sum) / num).To(BeNumerically("~", max/2, max/25))
    31  	})
    32  })