我想生成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 = 然后代码
旁注:我不记得为什么我之前已经生成了这样的数字,但记得 Math.random 生成的数字到8位小数。
谢谢你的帮助! :)
Ps:我已经看过很多关于等待向下或向上生成数字的帖子,而且还没有找到想要直接生成数据的帖子。
更新:我想要一个数字值而不是一个看起来像数字的字符串
答案 0 :(得分:6)
你非常接近,你需要的是不使用十进制数作为最小值和最大值。让我们有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);
答案 1 :(得分:3)
将原始随机数乘以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>");
}
&#13;
答案 2 :(得分:2)
您可以使用以下代码。
var randomnum = (Math.random() * (10.00 - 1.00 + 1.00) + 1.00).toFixed(2);
答案 3 :(得分:2)
仅基于上述示例在视觉,数学和功能上进行简化。
function randomNumberGenerator(min = 0, max = 1, fractionDigits = 0, inclusive = true) {
const precision = Math.pow(10, Math.max(fractionDigits, 0));
const scaledMax = max * precision;
const scaledMin = min * precision;
const offset = inclusive ? 1 : 0;
const num = Math.floor(Math.random() * (scaledMax - scaledMin + offset)) + scaledMin;
return num / precision;
};
Math.max
可以防止来自fractionDigits
的负小数位
答案 4 :(得分:0)
使用打字稿/角度示例的更多方法:
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之间的随机值
答案 5 :(得分:0)
一个简单的javascript示例,可精确生成随机数:
var arrayActores = new Array();
答案 6 :(得分:0)
这是尚未提及的另一种方法,它将生成一个介于1和9.99之间的随机数...
(Math.random() * 8 + 1 + Math.random()).toFixed(2)
console.log((Math.random() * 8 + 1 + Math.random()).toFixed(2))
这是否是最实用的方法,完全是另一个问题。