我想生成一个介于1到10到小数点后2位之间的随机数,
我目前正在使用下面的代码来生成我的数字,
var randomnum = Math.floor(Math.random() * (10.00 - 1.00 + 1.00)) + 1.00;
最后,我想知道如何生成如下数字:
1.66
5.86
8.34
格式为: var随机数=,然后代码为
旁白:我不记得为什么我以前会生成这样的数字,但还记得Math.random生成8位小数点后的数字。
感谢您的帮助!:)
Ps:我看过很多关于等待向下或向上舍入生成的数字的帖子,但还没有找到一个想要直接生成它们的帖子。
更新:我想要一个数字值,而不是看起来像数字的字符串
发布于 2017-08-17 21:17:18
你们非常接近,你需要做的不是把十进制数作为最小值和最大值。假设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);
发布于 2017-08-17 21:15:08
将原始随机数乘以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;
}
发布于 2018-08-07 13:40:19
你可以使用下面的代码。
var randomnum = (Math.random() * (10.00 - 1.00 + 1.00) + 1.00).toFixed(2);
https://stackoverflow.com/questions/45735472
复制相似问题