A nodejs module for randomly selecting objects
- Selecting objects with & without replacement
- Select objects with different frequencies
On project folder run
npm install
Run tests
npm test
Run demo
npm start
npm install random-selector
const selectorFactory = require("random-selector");
- 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());
- 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());
var chigurhCoin = selectorFactory.createSimpleSelectorWithReplacement(['Head', 'Tail']);
console.log("The most you ever lost in a coin toss? ", chigurhCoin.select());
- 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);
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!");
}
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());