在Javascript中生成2个值到2个小数位之间的随机数

时间:2017-08-17 12:43:42

标签: javascript random

我想生成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:我已经看过很多关于等待向下或向上生成数字的帖子,而且还没有找到想要直接生成数据的帖子。

更新:我想要一个数字值而不是一个看起来像数字的字符串

7 个答案:

答案 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;
&#13;
&#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))

这是否是最实用的方法,完全是另一个问题。