2
我想在CoffeeScript中創建一個加權隨機數生成器。coffeescript加權隨機數
下面是Javascript代碼:
// init
var chances = {
red: 1,
blue: 4,
yellow: 10
},
bag = [];
// fill the bag with the values
for (var chance in chances) {
for (var i=0; i<chances[chance]; ++i) {
bag.push(chance);
}
}
// get random element
var index = Math.floor(Math.random()*bag.length,
element = bag[index];
當然,我可以在一個不是很優雅的方式來創建它(不變量初始化):
for chance, value of chances
for [1..value]
bag.push(chance)
index = Math.floor(Math.random()*bag.length;
element = bag[index];
我要簡化代碼,並創建最佳解決方案,但我被困住了:
bag = ((k for [1..v]) for k, v of chances)
此代碼在其中創建一個數組與數組wi希望的價值觀,但不是我想要的明顯,而且我不知道如何以一種很好的方式做到這一點。