Skip to content

zeroboo/nodejs-random-selector

Repository files navigation

random-selector

A nodejs module for randomly selecting objects

Status

NPM

CircleCI travis-ci Coverage Status Downloads

Features

  • Selecting objects with & without replacement
  • Select objects with different frequencies

Build

On project folder run

npm install

Run tests

npm test

Run demo

npm start

Usage

Install to your project:

npm install random-selector

Require the selector factory

const selectorFactory = require("random-selector");

Examples of creating selectors

  1. Blindly pick out balls in a bag without returning
var normalBag = selectorFactory.createSimpleSelectorWithoutReplacement([
    {color:'red'}, 
    {color:'black'}, 
]);
console.log("Selected ball: ", normalBag.select());
console.log("Selected ball: ", normalBag.select());
console.log("Bag now empty, you've got no balls to select: ", normalBag.select());
  1. Blindly pick out balls in a bag then return to the bag
var magicBag = selectorFactory.createSimpleSelectorWithReplacement([
    {color:'red', id:'left'}, 
    {color:'black', id:'right'}, 
]);
console.log("Ball checked: ", magicBag.select());
console.log("Ball checked: ", magicBag.select());
console.log("Still have balls: ", magicBag.select());
  1. Flipping an unbiased coin
var chigurhCoin = selectorFactory.createSimpleSelectorWithReplacement(['Head', 'Tail']);
console.log("The most you ever lost in a coin toss? ", chigurhCoin.select());
  1. Simulating rolling dice
var dice = selectorFactory.createSimpleSelectorWithReplacement([1, 2, 3, 4, 5, 6]);
var points = Array();
for(let i = 0;i<10;i++)
{
    points.push(dice.select());
}
console.log("Total points after 10 rolls: ", points);
  1. daisy meter: a interpersonal relationship evaluation tool bases on nature
var daisy = selectorFactory.createSimpleSelectorWithoutReplacement([]);
for(let i=0;i < daisy.getRandomer().getRandomIntBetween(4, 8);i++)
{
    daisy.getElements().push('petal');
}
var meter = true;
while(daisy.select()!=null)
{
    meter = !meter;
    console.log(meter?'He loves me':'He loves me not');
}
if(!meter){
    console.log("He fuckin' hates me, try another daisy!");
}
  1. Simulating wheel of fortune: Image Wheel of Fortune
var fortuneWheel = selectorFactory.createFrequencySelectorWithReplacement(
    [['1000$', 10]
        , ['750$', 10]
        , ['150$', 10]
        , ['400$', 10]
        , ['250$', 10]
        , ['800$', 10]
        , ['100$', 10]
        , ['450$', 10]
        , ['300$', 10]
        , ['600$', 10]
        , ['200$', 10]
        , ['350$', 10]
    ] ///Total frequency is 120
);
console.log("Prize: ", fortuneWheel.select());
///A cheated wheel with 0.5% chance to get 1000$, 50 % chance to get 10$, 49.5% to get stuck (return null)
var realWheel = selectorFactory.createFrequencySelectorWithReplacement(
    [['1000$', 50]
        , ['10$', 5000]
    ]
    , 10000 /*total frequency > sum of all element's freequency: it means selecting may failed (return null)*/
);
console.log("Prize: ", realWheel.select());
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy