var GetTilesWithin = require('./GetTilesWithin'); var WeightedRandomize = function (tileX, tileY, width, height, weightedIndexes, layer){ if (weightedIndexes === undefined) { return ; } var i; var tiles = GetTilesWithin(tileX, tileY, width, height, null , layer); var weightTotal = 0; for (i = 0; i < _AN_Read_length('length', weightedIndexes); i++ ){ weightTotal += weightedIndexes[i].weight; } if (weightTotal <= 0) { return ; } for (i = 0; i < _AN_Read_length('length', tiles); i++ ){ var rand = Math.random() * weightTotal; var sum = 0; var randomIndex = -1; for (var j = 0; j < _AN_Read_length('length', weightedIndexes); j++ ){ sum += weightedIndexes[j].weight; if (rand <= sum) { var chosen = weightedIndexes[j].index; randomIndex = Array.isArray(chosen)? chosen[Math.floor(Math.random() * _AN_Read_length('length', chosen))]: chosen; break ; } } tiles[i].index = randomIndex; } } ; module.exports = WeightedRandomize;