在两个十进制数之间生成一个随机数[重复]

Posted

技术标签:

【中文标题】在两个十进制数之间生成一个随机数[重复]【英文标题】:Generate a random number between two decimal numbers [duplicate] 【发布时间】:2019-10-18 21:57:51 【问题描述】:

我必须生成一个介于 0.1 和 1.5 之间的随机数。 确切的命令可能是什么?

const random = +(Math.random() * ((1.5- 0.1) + 0.1)).toFixed(1);
console.log(random)

【问题讨论】:

@str 烦人,那是整数,而 OP 想要浮点数。不需要大的改变,但很烦人,我们没有足够通用的东西来轻松覆盖。 请描述您提出的解决方案有什么问题 【参考方案1】:

如果您想要 0.1 步的随机数,最简单的方法是生成 1 到 15 之间的随机数,然后将结果除以 10。

(Math.floor(Math.random() * 15) + 1) / 10;

【讨论】:

【参考方案2】:

Mah.random() * (max - min) + min 始终是您的最佳选择。如果您想稍后将其四舍五入为n 小数,只需将其包装成这样:Math.round(random * 10 ** n) / (10 ** n)

如果是一位小数,即Math.round(10 * (Math.random() * (max - min) + min)) / 10

【讨论】:

【参考方案3】:

您可以将 15 的因子作为随机值,然后将除以 10 的整数值。

function getRandom() 
    return (Math.floor(Math.random() * 15) + 1) / 10;


var i = 1e6,
    r,
    d = ;

while (i--) 
    r = getRandom();
    d[r] = (d[r] || 0) + 1;


console.log(d);

【讨论】:

以上是关于在两个十进制数之间生成一个随机数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript内置对象的练习

js生成十六进制随机数(验证码)

随机生成16位的16进制数

C#中随机生成的十六进制数

如何在R中生成随机的64位十六进制数?

C++ 编写程序,输入两个数,输出两个数之间的所有数的二进制,三进制,和八进制?