在javascript中创建一个限制范围内的数字字符串

时间:2014-07-03 09:45:39

标签: javascript

如何使用javascript随机创建一个20位数字的数字,每个数字的范围仅为1到5?

一个例子是:52431425331425141521

2 个答案:

答案 0 :(得分:3)

除了我在上面的评论中给出的逻辑算法,你可以使用这个单行:

var result = Math.floor(Math.random()*95367431640625).toString(5)
                            .split("").map(function(n) {return +n+1;}).join("");

基本上,选择0到5之间的随机整数 20 -1,将其转换为基数5,然后将所有数字递增1,所以它们都在1到5之间^ _ ^

编辑:刚刚意识到这不会很好地处理低数字。试试这个:

var result = (
         new Array(20).join("0")
         +
         Math.floor(Math.random()*95367431640625).toString(5)
     ).slice(-20).split("").map(function(n) {return +n+1;}).join(""));

这基本上是相同的,除了它在你的数字的前面加上19个零,然后切掉最后20个字符。这将允许它正确处理前导零,在所有情况下都给出一个20位数字。

答案 1 :(得分:2)

您可以使用:

function random_string()
    {
        var text = "";
        var string = "12345";

        for( var i=0; i < 20; i++ )
            text += string.charAt(Math.floor(Math.random() * string.length));

        return text;
    }
    random_string();