Standard Library: Generators

dig


[%dig: count ? 1]

string

Prints a uniformly random decimal digit. If count is specified, repeats count times.

Parameters

countint (optional)
The number of digits to generate. Defaults to 1.

Example

# Generate a random 32-character decimal string
[dig:32] # ~> 01952208554533821061510695429126

digh


[%digh: count ? 1]

string

Prints a uniformly random lowercase hexadecimal digit. If count is specified, repeats count times.

Parameters

countint (optional)
The number of digits to generate. Defaults to 1.

Example

# Generate a random 32-character hex string
[digh:32] # ~> f4e5bef31ea02eac22f220e68e837587

dignz


[%dignz: count ? 1]

string

Prints a uniformly random non-zero decimal digit. If count is specified, repeats count times.

Parameters

countint (optional)
The number of digits to generate. Defaults to 1.

Example

# Generate a random 32-character decimal string without zeros
[dignz:32] # ~> 92558761934966287236132511739511

maybe


[%maybe: p ? 0.5]

bool

Returns a bool value with p probability of being true.

p must be either a float or nothing. If omitted, it will default to 0.5.

Parameters

pfloat | nothing (optional)
The probability (0.0 <= p <= 1.0) of the printed boolean being true. If omitted or nothing, defaults to 0.5.

rand


[%rand: a; b]

int

Prints a random integer with uniform distribution between a and b (both inclusive).

Parameters

aint
The first inclusive bound of the random number.

bint
The second inclusive bound of the random number.

Example

# Choose a number by fair dice roll.
You roll a `[rand:1;6].

# ~> You roll a 4.

randf


[%randf: a; b]

float

Prints a random float with uniform distribution between a (inclusive) and b (exclusive).

Parameters

afloat
The first inclusive bound of the random number.

bfloat
The second inclusive bound of the random number.

rand-list


[%rand-list: a; b; n]

list

Prints a list of n random integers with uniform distribution between a and b (both inclusive).

Parameters

aint
The first inclusive bound of the random numbers.

bint
The second inclusive bound of the random numbers.

nint
The amount of numbers to generate.

Example

# 2-dice roll

<$roll = [rand-list: 1; 6; 2]>
You rolled `[join: \sand\s; <roll>] for a total of `[sum: <roll>].

# ~> You rolled 5 and 3 for a total of 8.

randf-list


[%randf-list: a; b; n]

list

Prints a list of n random floats with uniform distribution between a (inclusive) and b (exclusive).

Parameters

afloat
The first inclusive bound of the random numbers.

bfloat
The second inclusive bound of the random numbers.

nint
The amount of numbers to generate.

rand-list-sum


[%rand-list-sum: input; count; variance]

list

Generates a list of count random numbers, whose sum equals input, and with a maximum absolute difference of variance.

Parameters

inputint | float
The input number to that the output numbers should add up to.

countint
The amount of numbers to generate.

varianceint | float
The maximum absolute difference between any two generated numbers.

Errors

Raises an error if count is less than 1.

Example

# Generate and print a list of 5 random numbers that add up to 1000
<$parts = [rand-list-sum: 1000; 5; 200]>
[join: <parts>; \s+\s] = [sum: <parts>]

##
Output:
170 + 378 + 83 + 189 + 180 = 1000
##