random

package
v0.73.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 13, 2022 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CryptoSeed

type CryptoSeed struct{}

func (CryptoSeed) Int63

func (c CryptoSeed) Int63() int64

Int63 returns a non-negative pseudo-random 63-bit integer as an int64.

func (CryptoSeed) Seed

func (c CryptoSeed) Seed(seed int64)

Seed should use the provided seed value to initialize the generator to a deterministic state, but in CryptoSeed, the value is ignored.

func (CryptoSeed) Uint64

func (c CryptoSeed) Uint64() uint64

type Factory added in v0.73.0

type Factory struct {
	// contains filtered or unexported fields
}

func (*Factory) Make added in v0.73.0

func (f *Factory) Make(rnd *Random, T any) (_T any)

func (*Factory) RegisterType added in v0.73.0

func (f *Factory) RegisterType(T any, ff typeFunc)

type Random

type Random struct {
	Source  rand.Source
	Factory Factory
	// contains filtered or unexported fields
}

A Random is a source of random numbers. It is safe to be used in from multiple goroutines.

Example (CryptoSeed)
package main

import (
	"github.com/adamluzsi/testcase/random"
)

func main() {
	random.New(random.CryptoSeed{})
}
Output:

Example (MathRand)
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	seed := time.Now().UnixNano()
	source := rand.NewSource(seed)
	random.New(source)
}
Output:

func New

func New(s rand.Source) *Random
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	_ = random.New(rand.NewSource(time.Now().Unix()))
}
Output:

func (*Random) Bool

func (r *Random) Bool() bool
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.Bool() // returns a random bool
}
Output:

func (*Random) ElementFromSlice

func (r *Random) ElementFromSlice(slice interface{}) interface{}
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	// returns a random element from the given slice
	_ = rnd.ElementFromSlice([]string{`foo`, `bar`, `baz`}).(string)
}
Output:

func (*Random) Float32

func (r *Random) Float32() float32

Float32 returns, as a float32, a pseudo-random number in [0.0,1.0).

Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.Float32()
}
Output:

func (*Random) Float64

func (r *Random) Float64() float64

Float64 returns, as a float64, a pseudo-random number in [0.0,1.0).

Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.Float64()
}
Output:

func (*Random) Int

func (r *Random) Int() int

Int returns a non-negative pseudo-random int.

Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.Int()
}
Output:

func (*Random) IntB added in v0.71.0

func (r *Random) IntB(min, max int) int

IntB returns, as an int, a non-negative pseudo-random number based on the received int range's [min,max].

func (*Random) IntBetween

func (r *Random) IntBetween(min, max int) int

IntBetween returns, as an int, a non-negative pseudo-random number based on the received int range's [min,max].

Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.IntBetween(24, 42)
}
Output:

func (*Random) IntN

func (r *Random) IntN(n int) int

IntN returns, as an int, a non-negative pseudo-random number in [0,n). It panics if n <= 0.

Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.IntN(42)
}
Output:

func (*Random) KeyFromMap

func (r *Random) KeyFromMap(anyMap interface{}) interface{}
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.KeyFromMap(map[string]struct{}{
		`foo`: {},
		`bar`: {},
		`baz`: {},
	}).(string)
}
Output:

func (*Random) Make added in v0.73.0

func (r *Random) Make(T any) any
Example
package main

import (
	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(random.CryptoSeed{})

	type ExampleStruct struct {
		Foo string
		Bar int
		Baz *int
	}

	_ = rnd.Make(&ExampleStruct{}).(*ExampleStruct) // returns a populated struct
}
Output:

func (*Random) String

func (r *Random) String() string
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.String()
}
Output:

func (*Random) StringN

func (r *Random) StringN(length int) string
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.StringN(42)
}
Output:

func (*Random) StringNWithCharset

func (r *Random) StringNWithCharset(length int, charset string) string

func (*Random) Time

func (r *Random) Time() time.Time
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.Time()
}
Output:

func (*Random) TimeB added in v0.71.0

func (r *Random) TimeB(from, to time.Time) time.Time

TimeB returns, as an time.Time, a non-negative pseudo-random time in [from,to].

func (*Random) TimeBetween

func (r *Random) TimeBetween(from, to time.Time) time.Time

TimeBetween returns, as an time.Time, a non-negative pseudo-random time in [from,to].

Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.TimeBetween(time.Now(), time.Now().Add(time.Hour))
}
Output:

func (*Random) TimeN added in v0.54.0

func (r *Random) TimeN(from time.Time, years, months, days int) time.Time
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))
	var (
		years  = 0
		months = 4
		days   = 2
	)
	_ = rnd.TimeN(time.Now(), years, months, days)
}
Output:

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL