作者:我是vb小草 | 来源:互联网 | 2023-09-24 19:33
我在网站上阅读了一些有关获取运行功能百分比的主题,但是没有一个指导我如何获取运行功能的特定十进制百分比。
我尝试过类似的事情:
Math.floor(Math.random() * 100) + 1 + '%'
但是它不返回小数。
我要说的是,有{%{%1}}运行console.log("0.5%")
的机会为0.5%,有什么办法吗?非常感谢你!
这就是您要的。
我在上面的评论中解释了percentFromRandom。
调用该函数时,runWithProbability函数将以一定概率调用给定函数。
logWithProbability使用runWithProbability函数,但使用自定义console.log功能作为您的答案。
init函数以30个随机概率运行30次,显示了该函数用法的示例。在大多数情况下,它将记录较大的%,因为它们更有可能调用console.log函数。
//convert the random value into human readable percentage
function percentageFromRandom(value,fractiOnalDigits= 2){
return (value*100).toFixed(fractionalDigits)+'%';
}
//take a function and probability of running it
//if the probability is met,call the function.
function runWithProbability(fn,probability){
if(probability >= 1 || Math.random() return fn(probability);
}
return false;
}
//make a console log with a certain probability,//log the percentage probability if called
function logWithProbability(probability){
runWithProbability(()=>
console.log(percentageFromRandom(probability)),probability);
}
// See console logs and their probability as
// a percentage of running.
const init = () => {
for(let i = 0; i <30; i++){
logWithProbability(Math.random());
}
}
init();
,
Math.random()
返回0到1之间的随机数。
百分比只是100的一小部分。将100除以得到0到1之间的数字。
因此,要获得一段代码可以在一定百分比的时间内运行,请采用所需的百分比,将其除以100,然后在随机数小于该数量的情况下运行该代码。
if( Math.random() <0.5/100) {
/* code that runs 0.5% of the time */
}
,
Math.floor(Math.random())
示例的问题在于,Math.floor()
删除了数字的所有小数值。要使精度达到某个固定点,请乘以所需的最大整数,然后将其调整为固定的小数。
for (var i = 0; i <10; i++) {
var num = 10 * Math.random(); // Max 10.000...
console.log(num,num.toFixed(1) + '%') // Fix (and round) the first decimal
}