UNPKG

@aligov/retcodelog

Version:

retcode log上报npm包,适用于 browser|nodejs|weex|E应用

63 lines (52 loc) 1.55 kB
// // 修改抽样算法,以前以uid作为抽样的key,在大于100抽样率下会呈现正态分布 // 改用random可以规避这个问题 // // (function (n) { // var guid = function () { // return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { // var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r&0x3|0x8); // return v.toString(16); // }); // }; // var parseGuid = function (uid) { // var num = 0; // for (var i = 0, len = uid.length; i < len; i++) { // num += uid.charCodeAt(i); // } // return num; // }; // var arr = []; // for (var i = 0, n = n || 1000000; i++ < n;) { // // arr.push(parseGuid(guid()) % 100); // arr.push(Math.floor(Math.random() * 100)); // } // var map = {}; // arr.forEach(function (num) { // if (!map[num]) { // map[num] = 0; // } // map[num]++; // }); // console.log(map); // })(); module.exports = function (wpo) { var map = {}; wpo.sampling = function (mod,isApi) { if (mod == 1) { return 1; // 100% } // api采样率使用动态api if(isApi){ return Math.floor(Math.random() * mod); } if (typeof map[mod] == 'number') { return map[mod]; } // // 抽样算法改为Math.random // map[mod] = Math.floor(Math.random() * mod); return map[mod]; }; };