random_utils

Methods

(static) gaussian(stdev, meanopt)

Description:
  • Generate a whole random number, on a normal (Gaussian, "bell curve") distribution. For example, you might wish to create a youth gang where the members are mostly 18, but with outliers that are much younger or older. This random number generator will give more useful results than random() if you do not want the numbers to be evenly distributed.

Source:
Parameters:
Name Type Attributes Default Description
stdev Number

The amount of variance from the mean, where about 68% of the numbers will be a number +/- this amount.

mean Number <optional>
0

The mean around which random numbers will be generated.

Returns:

a random number

(static) guid() → {String}

Description:
  • Generates a unique string (not guaranteed to be globally unique, but certainly unique in any given context).

Source:
Example
guid()
=> "6v2w2762322fwsds"
Returns:

a context unique string

Type
String

(static) nonNegativeGaussian(stdev, meanopt)

Description:
  • As the gaussian random number method, but it will not return negative numbers (without disturbing the rest of the distribution).

Source:
Parameters:
Name Type Attributes Default Description
stdev Number

The amount of variance from the mean, where about 68% of the numbers will be a number +/- this amount.

mean Number <optional>
0

The mean around which random numbers will be generated.

Returns:

a random, non-negative number (can include zero)

(static) random(value) → {Object}

Description:
  • Return a random value from a "strategy" value, recursively. An element will be selected from an array, a function will be executed for its return value, and a string with variants will be returned with a variant selected. The value is then checked again to see if it can still be randomized further, and this process continues until a primitive value is returned (a number, object, string, or boolean).

Source:
Example
random("A")
=> "A"
random(['A','B','C']);
=> 'A'
random("{Big|Bad|Black} Dog");
=> 'Bad Dog'
random(() => ["A","B","C"]);
=> "B"
Parameters:
Name Type Description
value String | Array | function

A string with optional variants, or an array from which to select an element, or a function that returns a value.

Returns:

a single randomized instance, based on the value passed in

Type
Object

(static) randomElement(an)

Description:
  • A function that takes an array and returns a random element in the array. Does not execute functions, select a string out of string expressions, or perform any other recursive randomization.

Source:
Parameters:
Name Type Description
an collection

array

Returns:

one element of the array

(static) roll(number) → {Number}

Description:
  • Returns a random number based on a die roll string or a provided number. Math operations are supported.

Source:
Example
roll(8)
=> 4
Parameters:
Name Type Description
number Number

the maximum value to return

Returns:

a value from 1 to N

Type
Number

(static) roll(notation) → {Number}

Source:
Example
roll("3d6+2")
=> 9
roll("(2d4*10)+500")
=> 540
Parameters:
Name Type Description
notation String

a notation for a dice roll

Returns:

a die roll value

Type
Number

(static) selectElements(tree) → {Array}

Description:
  • It’s common to want to select elements according to probabalities and alternatives. Given the following format, this will return a list of selected strings (which must map to whatever you are working on):

    { "oneOf": { "A & B": 50, // if selected, returns ["A","B"] "C": 50, // these values should add up to 100, if they don't // selecting nothing fills the remaining percentage }, "oneOf:2": { // use anything after "oneOf" to create unique key A: 50, B: 50, }, "allOf": { // all noces that pas d100 check are added (100 = always) A: 20, B: 75, }, // this is 1d2 of the child nodes "someOf:1d2": ["2d3:Cash Register"], // if selected, add 2d3 nodes };

Source:
Parameters:
Name Type Description
tree Object
Returns:

a list of selected elements

Type
Array

(static) shuffle(array)

Description:
  • Randomly shuffle the position of the elements in an array (uses Fisher-Yates shuffle). random() is usually more efficient, but if you need to iterate through a set of values in a random order, without traversing the same element more than once, shuffle() is a better way to randomize your data.

Source:
Example
var array = ['A','B','C']
    atomic.shuffle(array);
    =>
    array;
    => ['C','A','B']
Parameters:
Name Type Description
array Array

The array to shuffle (in place)

(static) test(percentage, value1opt, value2opt) → {Boolean|any}

Description:
  • Test against a percentage that something will occur.

Source:
Example
if (test(80)) {
    // Happens 80% of the time.
}
test(15, 'A', 'B')
=> 'B'
Parameters:
Name Type Attributes Description
percentage Number

The percentage chance that the function returns true

value1 any <optional>

the value to return if the test succeeds

value2 any <optional>

the value to return if the test fails

Returns:

true if test passes, false otherwise

Type
Boolean | any