Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including random-selector with all npm packages installed. Try it out:

var randomSelector = require("random-selector")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

random-selector v1.0.12

Randomly select objects.

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 base 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(
    [['1000apos;, 10]
        , ['750apos;, 10]
        , ['150apos;, 10]
        , ['400apos;, 10]
        , ['250apos;, 10]
        , ['800apos;, 10]
        , ['100apos;, 10]
        , ['450apos;, 10]
        , ['300apos;, 10]
        , ['600apos;, 10]
        , ['200apos;, 10]
        , ['350apos;, 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(
    [['1000apos;, 50]
        , ['10apos;, 5000]
    ]
    , 10000 /*total frequency > sum of all element's freequency: it means selecting may failed (return null)*/
);
console.log("Prize: ", realWheel.select());
RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free