github.com/cockroachdb/pebble@v0.0.0-20231214172447-ab4952c5f87b/internal/randvar/randvar.go (about)

     1  // Copyright 2019 The LevelDB-Go and Pebble Authors. All rights reserved. Use
     2  // of this source code is governed by a BSD-style license that can be found in
     3  // the LICENSE file.
     4  
     5  package randvar
     6  
     7  import "golang.org/x/exp/rand"
     8  
     9  // Static models a random variable that pulls from a distribution with static
    10  // bounds
    11  type Static interface {
    12  	Uint64(rng *rand.Rand) uint64
    13  }
    14  
    15  // Dynamic models a random variable that pulls from a distribution with an
    16  // upper bound that can change dynamically using the IncMax method.
    17  type Dynamic interface {
    18  	Static
    19  
    20  	// Increment the max value the variable will return.
    21  	IncMax(delta int)
    22  
    23  	// Read the current max value the variable will return.
    24  	Max() uint64
    25  }