Random overview
Added in v2.0.0
Table of contents
constructors
choice
Get a random element from an iterable.
Signature
export declare const choice: <Self extends Iterable<unknown>>(
elements: Self
) => Self extends NonEmptyIterable.NonEmptyIterable<infer A>
? Effect.Effect<A>
: Self extends Array.NonEmptyReadonlyArray<infer A>
? Effect.Effect<A>
: Self extends Iterable<infer A>
? Effect.Effect<A, Cause.NoSuchElementException>
: never
Example
import { Effect, Random } from "effect"
Effect.gen(function* () {
const randomItem = yield* Random.choice([1, 2, 3])
console.log(randomItem)
})
Added in v3.6.0
make
Constructs the Random
service, seeding the pseudo-random number generator with an hash of the specified seed. This constructor is useful for generating predictable sequences of random values for specific use cases.
Example uses:
- Generating random UI data for visual tests.
- Creating data that needs to change daily but remain the same throughout a single day, such as using a date as the seed.
Signature
export declare const make: <A>(seed: A) => Random
Example
import { Effect, Random } from "effect"
const random1 = Random.make("myseed")
const random2 = Random.make("myseed")
assert.equal(Effect.runSync(random1.next), Effect.runSync(random2.next))
Added in v3.5.0
next
Returns the next numeric value from the pseudo-random number generator.
Signature
export declare const next: Effect.Effect<number, never, never>
Added in v2.0.0
nextBoolean
Returns the next boolean value from the pseudo-random number generator.
Signature
export declare const nextBoolean: Effect.Effect<boolean, never, never>
Added in v2.0.0
nextInt
Returns the next integer value from the pseudo-random number generator.
Signature
export declare const nextInt: Effect.Effect<number, never, never>
Added in v2.0.0
nextIntBetween
Returns the next integer value in the specified range from the pseudo-random number generator.
Signature
export declare const nextIntBetween: (min: number, max: number) => Effect.Effect<number>
Added in v2.0.0
nextRange
Returns the next numeric value in the specified range from the pseudo-random number generator.
Signature
export declare const nextRange: (min: number, max: number) => Effect.Effect<number>
Added in v2.0.0
randomWith
Retreives the Random
service from the context and uses it to run the specified workflow.
Signature
export declare const randomWith: <A, E, R>(f: (random: Random) => Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
Added in v2.0.0
shuffle
Uses the pseudo-random number generator to shuffle the specified iterable.
Signature
export declare const shuffle: <A>(elements: Iterable<A>) => Effect.Effect<Chunk.Chunk<A>>
Added in v2.0.0
context
Random
Signature
export declare const Random: Context.Tag<Random, Random>
Added in v2.0.0
models
Random (interface)
Signature
export interface Random {
readonly [RandomTypeId]: RandomTypeId
/**
* Returns the next numeric value from the pseudo-random number generator.
*/
readonly next: Effect.Effect<number>
/**
* Returns the next boolean value from the pseudo-random number generator.
*/
readonly nextBoolean: Effect.Effect<boolean>
/**
* Returns the next integer value from the pseudo-random number generator.
*/
readonly nextInt: Effect.Effect<number>
/**
* Returns the next numeric value in the specified range from the
* pseudo-random number generator.
*/
nextRange(min: number, max: number): Effect.Effect<number>
/**
* Returns the next integer value in the specified range from the
* pseudo-random number generator.
*/
nextIntBetween(min: number, max: number): Effect.Effect<number>
/**
* Uses the pseudo-random number generator to shuffle the specified iterable.
*/
shuffle<A>(elements: Iterable<A>): Effect.Effect<Chunk.Chunk<A>>
}
Added in v2.0.0
symbols
RandomTypeId
Signature
export declare const RandomTypeId: typeof RandomTypeId
Added in v2.0.0
RandomTypeId (type alias)
Signature
export type RandomTypeId = typeof RandomTypeId
Added in v2.0.0