Random functions

These functions produce random results each time they run.

Internally, each function uses YarnSpinner.random random generator, which can be replaced with a custom generator if you need reproducible draws for debug purposes, or to prevent the player from getting different results upon reload.


Returns a random integer between 1 and n, inclusive. For example, dice(6) will return a random integer from 1 to 6, as if throwing a regular six-sided die.

The argument n must be numeric, and greater or equal than 1. If n is a non-integer, then it will be truncated to an integer value at runtime. Thus, dice(3.5) is equivalent to dice(3).

<<set $roll = dice(6)>>
<<set $coin_flip = if(dice(2) == 1, "H", "T")>>


Returns a random floating-point between 0 and 1.

This function can be used to implement events with a prescribed probability. For example:

<<if random() < 0.001>>
  // This happens only with 0.1% probability
  You found it! The Holy Grail!

random_range(a, b)

Returns a random integer between a and b inclusive.

Both arguments a and b must be numeric, and they will be truncated to integers upon evaluation. The value of a must be less than or equal to b, or otherwise a runtime exception will be thrown.

The purpose of this function is similar to dice(), but it can be used in situations where a custom range is desired.

<<set $coin_flip = bool(random_range(0, 1))>>