可能重复:
Generating random numbers in Javascript in a specific range?
如果我输入4的长度,我需要回到0 9999之间的数字。
我希望它是0填充(0004),但这可能是另一个功能。
答案 0 :(得分:1)
for(var x = 5, i = 0, y = ""; i < x; ++i, y += "9");
Math.floor(Math.random()*parseInt(y)); //random number
在for循环中,x将是您的输入长度。如果需要,您也可以在循环外移动x的定义。
你也可以尝试一下,看看哪一个跑得更快(可能是第一个,fyi):
for(var x = 5, y = "", i = 0; i < x; ++i, y += Math.floor(Math.random()*9));
parseInt(y); //random number
答案 1 :(得分:1)
function getRandom(c){
var r = (Math.random() * Math.pow(10, c)).toFixed(0);
while(r.length != c)
r = "0" + r;
return r;
}
getRandom(3);
答案 2 :(得分:0)
由于它是javascript,您可能希望在此方案中利用其弱类型。一种特殊的黑客方法是在0-9之间生成n个数字并使用字符串连接。
这篇文章似乎有答案:JavaScript expression to generate a 5-digit number in every case你可以填充连接。
编辑:所以这是我的实施:
function random(x){
var rand = Math.floor(Math.random() * Math.pow(10,x));
var dummy = rand;
while (dummy<Math.pow(10,x-1)){
rand = "0" + rand;
dummy = dummy*10;
}
return rand;
}
答案 3 :(得分:0)
试试这个:
function getNumber(range){
var max = Math.pow(10,range);
var num = Math.Random() * max;
}
至于zerofill
,你最好不要尝试内森在评论中提出的建议this
答案 4 :(得分:0)
嗯,这是数字部分。你可以找出填充部分。
function makeNumber(number){
var nines = "";
var returnNumber = "";
for(var i = 0; i < number; i++)
{
nines+= "9";
}
for(var i = 0; i < number; i++)
{
var returnNumber += String(Math.Random() * parseInt(nines));
}
return returnNumber;
}
答案 5 :(得分:0)
有点草率但有效:
var length = 4; //<-- or get however you want
var big = "";
for (i=0; i<length; i++) {
big = big + "9";
}
var big = parseInt(big);
var random = Math.floor(Math.random() * big).toString();
var random_len = random.toString().length;
if (random_len < length) {
var random_padded = random.toString()
padding = length - random_len;
for (i=0; i<padding; i++) {
random_padded = "0" + random_padded;
}
random = random_padded
}
alert(random);