我有一个函数,需要一个值数组和一个采样率。该功能应按采样率随机删除值。例如,20%的采样率应删除20%的值。我将迭代超过10.000个值,因此如何以良好的性能实现这一目标?
我的想法是这样的
for(var i = values.length-1; i >= 0; i--){
var rnd = Math.floor((Math.random() * 100) + 1);
if(rnd < samplingRate)
values.splice(i,1);
}
但我认为该Math.random()
功能不是性能选择。
如果只想对整个数组进行操作,则实际上不需要遍历整个数组。
循环n次,n = Math.floor(0.20 * originalArray.length) - 1
并在每次迭代中从数组中获取一个随机元素并将其删除。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句