package ethtest import ( "golang.org/x/exp/rand" "github.com/ethereum/go-ethereum/common" ) // PseudoRand extends [rand.Rand] (*not* crypto/rand). type PseudoRand struct { *rand.Rand } // NewPseudoRand returns a new PseudoRand with the given seed. func NewPseudoRand(seed uint64) *PseudoRand { return &PseudoRand{rand.New(rand.NewSource(seed))} } // Address returns a pseudorandom address. func (r *PseudoRand) Address() (a common.Address) { r.Read(a[:]) //nolint:gosec,errcheck // Guaranteed nil error return a } // AddressPtr returns a pointer to a pseudorandom address. func (r *PseudoRand) AddressPtr() *common.Address { a := r.Address() return &a } // Hash returns a pseudorandom hash. func (r *PseudoRand) Hash() (h common.Hash) { r.Read(h[:]) //nolint:gosec,errcheck // Guaranteed nil error return h } // Bytes returns `n` pseudorandom bytes. func (r *PseudoRand) Bytes(n uint) []byte { b := make([]byte, n) r.Read(b) //nolint:gosec,errcheck // Guaranteed nil error return b }