Skip to content

Probability.js makes it easy to call JavaScript functions by probability in Node.js and the browser.

License

Notifications You must be signed in to change notification settings

fschaefer/Probability.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Probability.js Logo

What is it?

Probability.js makes it easy to call JavaScript functions by probability in Node.js and the browser.

Why?

Circumstances are rare that you need to call functions by a certain probability in your daily work. But sometimes, especially in game development and in statistical applications, it's very handy to have an easy way of doing so. This library is inspired by this question on stackoverflow.com.

Overview

Probabilitilized functions

A probabilitilized function are several functions combined to one function by probability objects. It is created by calling the constructor Probability() with probability objects as arguments:

var probabilitilized = new Probability(probabilityObject, probabilityObject /* , ... */);

or with an array of probability objects:

var probabilitilized = new Probability([probabilityObject, probabilityObject /* , ... */]);

Probability objects

A probability object consists of an object with the properties p and f. p is the probability by that the function f is called when the probabilitilized function is invoked.

The value of the probability p have to be a string with an integer value suffixed with % between 0 and 100 or preferred a float lesser than or equal to 1.0. f is an ordinary JavaScript function:

var probabilityObject = {
    p: '50%',
    f: function () {}
};

/* or */

var probabilityObject = {
    p: 0.5,
    f: function () {}
};

The sum of all probabilities p must be lesser or equal to 100% or, respectively, 1.0. Otherwise a TypeError is thrown. That's also the case for malformed probabilityObjects.

Usage example

/* a counter to show the number of function calls */
var counter = {
    0: 0,
    1: 0,
    2: 0
};

/* create a "probabilitilized function" by invoking Probability() with 3 "probability objects" */
var probabilitilized = new Probability({
    p: '30%',                                         /* the probability by that ... */
    f: function () {                                  /* ... this function is called */
        counter[0]++;
    }
}, {
    p: '10%',
    f: function () {
        counter[1]++;
    }
}, {
    p: '60%',
    f: function () {
        counter[2]++;
    }
});

/* call the probabilitilized functions 100 times */
for (var i = 0; i < 100; i++) {
    probabilitilized();
}

/* show that every function is called by its probability */
console.log(counter); // => {"0":27,"1":11,"2":62}

About

Probability.js makes it easy to call JavaScript functions by probability in Node.js and the browser.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published