首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Javascript中生成介于两个值到两个小数位之间的随机数

在Javascript中生成介于两个值到两个小数位之间的随机数
EN

Stack Overflow用户
提问于 2017-08-17 20:43:42
回答 6查看 35.3K关注 0票数 22

我想生成一个介于1到10到小数点后2位之间的随机数,

我目前正在使用下面的代码来生成我的数字,

代码语言:javascript
复制
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:我看过很多关于等待向下或向上舍入生成的数字的帖子,但还没有找到一个想要直接生成它们的帖子。

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-08-17 21:17:18

你们非常接近,你需要做的不是把十进制数作为最小值和最大值。假设max = 1000和min = 100,那么在Math.floor之后,您需要除以100:

代码语言:javascript
复制
var randomnum = Math.floor(Math.random() * (1000 - 100) + 100) / 100;

或者,如果您想使用小数:

代码语言:javascript
复制
var precision = 100; // 2 decimals
var randomnum = Math.floor(Math.random() * (10 * precision - 1 * precision) + 1 * precision) / (1*precision);
票数 20
EN

Stack Overflow用户

发布于 2017-08-17 21:15:08

将原始随机数乘以10^decimalPlaces,求底,然后除以10^decimalPlaces。例如:

代码语言:javascript
复制
floor(8.885729840652472 * 100) / 100  // 8.88

代码语言:javascript
复制
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):

代码语言:javascript
复制
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;
}
票数 15
EN

Stack Overflow用户

发布于 2018-08-07 13:40:19

你可以使用下面的代码。

代码语言:javascript
复制
var randomnum = (Math.random() * (10.00 - 1.00 + 1.00) + 1.00).toFixed(2);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45735472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档