code: func Uint64n(n uint64) uint64 {
  	if n == 0 {
  		panic("fastrand: argument to Uint64n is 0")
  	}
  	// To eliminate modulo bias, keep selecting at random until we fall within
  	// a range that is evenly divisible by n.
  	// NOTE: since n is at most math.MaxUint64, max is minimized when:
  	//    n = math.MaxUint64/2 + 1 -> max = math.MaxUint64 - math.MaxUint64/2
  	// This gives an expected 2 tries before choosing a value < max.
  	max := math.MaxUint64 - math.MaxUint64%n
  	b := Bytes(8)
  	r := *(*uint64)(unsafe.Pointer(&b[0]))
  	for r >= max {
  		Read(b)
  		r = *(*uint64)(unsafe.Pointer(&b[0]))
  	}
  	return r % n
  }
docs: // Uint64n returns a uniform random uint64 in [0,n). It panics if n == 0.