{"_id":"@babakabadkheir/smart_random","_rev":"1-ba0f4276de3bfdd8d66d5bed389cc647","name":"@babakabadkheir/smart_random","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@babakabadkheir/smart_random","version":"1.0.0","description":"smart random tools","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/fraybabak/smart_random.git","email":"keanbabak@gmail.com"},"author":{"name":"babakabadkheir"},"license":"MIT","private":false,"engines":{"node":">=6.0.0"},"bugs":{"url":"https://github.com/fraybabak/smart_random/issues"},"homepage":"https://github.com/fraybabak/smart_random#readme","gitHead":"cc82cdc2203fdccb1fe67a52f64966079588fc4f","_id":"@babakabadkheir/smart_random@1.0.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HEqYQIr8Rj9jnKpOwNvVnrDTp308tHP5+ZXBiuRiabivEZMKaPCr9xxr0zQ3s3BytVMAJC29eEkEH5FlLP4svQ==","shasum":"1671ef83674aa63e51d2e9b9e9e8fa57555eb4d4","tarball":"https://registry.npmjs.org/@babakabadkheir/smart_random/-/smart_random-1.0.0.tgz","fileCount":5,"unpackedSize":2832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsQhuCRA9TVsSAnZWagAAIa4P/jwXBKJwzYSAycgKolXF\nawvilHamEB+xVuLKaRx1ZBe1qUahxgoFVq+ILQzXU6aWUINhfdl57SoFFGdR\nuAGGbStWXKk/vHRXNWUcbhi6a3DryS1HlNZwCW5xDfsbr+N1chkGtgNoxSgp\nONXkOlcEy40OGTPAUMy5ZXnqsCdVW2MsC0ya+8o37FpwRia00zx3lm8PCKxW\ntm4tq2phXM4uY/l7+sdBobLEav3iyDweQf4t2Toogiy0xD6ROro/FPE7Kk91\nwvZ+nANrXcasEageSoKlqRhqnaaDs5pqtYF2ShGVY1E3qpxXvD1MiOsA3b9Y\n0HEqJraKmhTk3MnQrh9jvo+2as8lgy9FIZEAoIGY160Cmv8r6O/VAqzRLqmw\nNi8YULG0De7RXOCx1ddIKEmPBts9c6ZkxcB2eCRwFJSaZix9YmUnbBzHv2l2\nWCOsIKDbHmizgXj2hucwSLdXgmV27vU6BX20A5D9AFWdbCvu65LxaVzP2fXb\n+92GlC1TgiglrJ88P2bdfQXEw8kdruBLO+sagp59s4UvgqJwd73LChPoMR9F\nKl3vrMzYr88xs1Hd02xn6h3lFZuS9mD2UsaKDuy/dwU9cH88b04MHBa13cjl\n376LFrO2b0Hto8AIhfpLxj6mZGtAp1Hthb7w0/SZ+gH4P/O6htc6CcEnqr9O\nn1Ra\r\n=EWGH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICgC80Bj6JUCvwQXb4JemeXXW5r6FNADIipWJJyh6o3LAiB9Pe4ZRqK8Q2hioV8ttPp1fXySDA71GMwRmDBnU58/pA=="}]},"_npmUser":{"name":"babakabadkheir","email":"keanbabak@gmail.com"},"directories":{},"maintainers":[{"name":"babakabadkheir","email":"keanbabak@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/smart_random_1.0.0_1605437550371_0.22628238406814494"},"_hasShrinkwrap":false}},"time":{"created":"2020-11-15T10:52:30.335Z","1.0.0":"2020-11-15T10:52:30.574Z","modified":"2022-04-04T17:24:48.550Z"},"maintainers":[{"name":"babakabadkheir","email":"keanbabak@gmail.com"}],"description":"smart random tools","homepage":"https://github.com/fraybabak/smart_random#readme","repository":{"type":"git","url":"git+https://github.com/fraybabak/smart_random.git","email":"keanbabak@gmail.com"},"author":{"name":"babakabadkheir"},"bugs":{"url":"https://github.com/fraybabak/smart_random/issues"},"license":"MIT","readme":"# smart_random\nrandom with wieght\n\n\nintro:\n\nI needed a solution that random pick of item in items works with wieght. the scenario had a condition .each item with most Abundance has litle chance to pick.\nso I came with some algorithm :\nnumber of items:\n##### total = 0 \nitems it self:\n##### items\narray of items with abundance\n##### abundances\n\nso algorithm works like this:\n\n\n```\nlet items = {a: 10, b: 50, c: 10 }\n\nlet total = 0\n\nlet abundances = []\n\n// getting sum of all abundances \nfor (i  of  Object.values(items)){\n\n   total  =  total+i\n\n}\n// we are looping through each pair (keys,values) and pushing to abundances by (total-value)times\nfor (let [key, value] of  Object.entries(items)) {\n\n    for(let i=0;i<total-value;i++){\n\n        abundances.push(key)\n\n    }\n\n}\n// now we have an array of items with abundance , we can simply just pick from new array.\nrandom_item  =  abundances[Math.floor(Math.random()*abundances.length)];\n```\n\nso this is working fine but I need to colabrate with others to extend this or finding a better algorithm .you are welcome to start.","readmeFilename":"README.md"}