我想生成一个1到10之间的随机数,最多2个小数位,
我目前正在下面使用它来生成我的电话号码,
var randomnum = Math.floor(Math.random() * (10.00 - 1.00 + 1.00)) + 1.00;
最终,我想知道如何生成数字:
1.66
5.86
8.34
格式:var randomnum = 然后输入代码
sidenote:我不记得为什么以前生成过这样的数字,但是记得关于Math.random生成数字到小数点后8位的内容。
谢谢您的帮助! :)
Ps:我已经看到很多关于等待舍入或向上舍入生成的数字的帖子,还没有找到想要直接生成它们的帖子。
更新:我想要一个数字值而不是看起来像数字的字符串
您非常接近,您不需要使用最小和最大十进制数。让我们有max = 1000和min = 100,因此在Math.floor之后,您需要除以100:
var randomnum = Math.floor(Math.random() * (1000 - 100) + 100) / 100;
或者如果您想使用小数:
var precision = 100; // 2 decimals
var randomnum = Math.floor(Math.random() * (10 * precision - 1 * precision) + 1 * precision) / (1*precision);
将原始随机数乘以10^decimalPlaces
,将其取整,然后除以10^decimalPlaces
。例如:
floor(8.885729840652472 * 100) / 100 // 8.88
function genRand(min, max, decimalPlaces) {
var rand = Math.random()*(max-min) + min;
var power = Math.pow(10, decimalPlaces);
return Math.floor(rand*power) / power;
}
for (var i=0; i<20; i++) {
document.write(genRand(0, 10, 2) + "<br>");
}
根据评论进行编辑:对于包含性浮点随机函数(使用this answer):
function genRand(min, max, decimalPlaces) {
var rand = Math.random() < 0.5 ? ((1-Math.random()) * (max-min) + min) : (Math.random() * (max-min) + min); // could be min or max or anything in between
var power = Math.pow(10, decimalPlaces);
return Math.floor(rand*power) / power;
}
您可以使用下面的代码。
var randomnum = (Math.random() * (10.00 - 1.00 + 1.00) + 1.00).toFixed(2);
使用typescript / angular示例的另一种方法:
getRandom(min: number, max: number) {
return Math.random() * (max - min) + min;
}
console.log('inserting min and max values: ', this.getRandom(-10.0, -10.9).toPrecision(4));
获得-10.0和-10.9之间的随机值