phellipeandrade / random-weighted-pick

Easily choose a random item from a weighted list of items.
MIT License
4 stars 0 forks source link
javascript list nodejs pick random weight weighted

random-weighted-pick

Greenkeeper badge A lightweight utility that allows you to easily choose a random item from a weighted list of items, with a probability dependent on their weight.

this module has no external dependencies and is licensed under the MIT License.

codebeat badge

Installation & Usage

install

npm i -S random-weighted-pick

usage

import weightedPick from 'random-weighted-pick'
// OR
var weightedPick = require('random-weighted-pick');

const options = [
    { id: 0, weight: 0.2, item: () => 'Lemon' },
    { id: 1, weight: 0.3, item: ['Grape', 'Orange', 'Apple'] },
    { id: 2, weight: 0.4, item: 'Mango' },
    { id: 3, weight: 0.1, item: 3 }
]
// Sum of 'weights' should be equal 1.

const result = weightedPick(options)

console.log(result) // { id: 2, item: 'Mango' }

🔄 Run this example on Codepen

Development

install

npm install

Dependency module install

build

npm run build

Do some magic with ES6 to create ES5 code.

test

npm run test

Run test with Jest + Chai

develop

npm run dev : Run develop server

You can see result in

http://localhost:8080

List of available tasks

clean

rm -f dist/*

Delete existing dist files

License

MIT License

Copyright (c) 2016 KossHackaton OneTeam