首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript,生成一个长度为9个数字的随机数

JavaScript,生成一个长度为9个数字的随机数
EN

Stack Overflow用户
提问于 2010-08-09 11:19:54
回答 11查看 111.7K关注 0票数 64

我正在寻找一种高效、优雅的方法来生成长度为9位数的JavaScript变量:

示例: 323760488

EN

回答 11

Stack Overflow用户

发布于 2010-08-09 11:38:33

为什么不直接从Math.random()字符串表示中提取数字呢?

代码语言:javascript
复制
Math.random().toString().slice(2,11);
/*
Math.random()                         ->  0.12345678901234
             .toString()              -> "0.12345678901234"
                        .slice(2,11)  ->   "123456789"
 */

(要求每个javascript实现Math.random()的精度至少是9位小数)

票数 76
EN

Stack Overflow用户

发布于 2012-12-05 01:04:44

还有..。

代码语言:javascript
复制
function getRandom(length) {

return Math.floor(Math.pow(10, length-1) + Math.random() * 9 * Math.pow(10, length-1));

}

getRandom(9) => 234664534

票数 26
EN

Stack Overflow用户

发布于 2011-10-28 23:09:29

我找到了三种方法,按效率排序:(测试运行Firefox 7.0 Win XP的机器)

代码语言:javascript
复制
parseInt(Math.random()*1000000000, 10)

100万次迭代:~626ms。到目前为止最快的- parseInt是一个本机函数,而不是再次调用数学库。注:见下文。

代码语言:javascript
复制
Math.floor(Math.random()*1000000000)

100万次迭代:~1005ms。两个函数调用。

代码语言:javascript
复制
String(Math.random()).substring(2,11)

100万次迭代:约2997ms。三个函数调用。

还有..。

代码语言:javascript
复制
parseInt(Math.random()*1000000000)

100万次迭代:约362ms。注意: parseInt通常被认为在没有基数参数的情况下使用是不安全的。请参阅https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt或谷歌的"JavaScript:好的部分“。但是,传递给parseInt的参数似乎永远不会以'0‘或'0x’开头,因为输入是先乘以1000000000。YMMV.

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3437133

复制
相关文章

相似问题

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