如何在math.random上指定范围?

时间:2014-11-20 10:22:05

标签: javascript

<html>
<head>
</head>
<body>
<input type="Textbox" id="pwbx" />

<button OnClick="GetRandom()" type="button">generate</button>
<script>
function getCharacter() {
return Math.floor(Math.random() * 18).toString(18);
}
for( var str="", i=0, l=14+Math.floor(Math.random()*3); i<l; i++) {
str += getCharacter();
}
</script>
</body>
</html>

这给了我一个小于1的随机数,如0.4567432112等。

我如何改变它,给我一个14到16个字符的字符串,随机的字母数字?那么由abcdefgh0123456789组成的14,15或16个字符的字符串?

由于

5 个答案:

答案 0 :(得分:3)

字符0123456789abcdefgh的范围是十八进制数字(基数为18的数字),所以你可以这样做:

function getCharacter() {
    return Math.floor(Math.random() * 18).toString(18);
}

现在做14-16次:

for( var str="", i=0, l=14+Math.floor(Math.random()*3); i<l; i++) {
    str += getCharacter();
}

答案 1 :(得分:2)

这将返回一个随机长度为14-16的字符串

function getRandomString(min, max) {

      num=  Math.ceil(Math.random()*3)+14;

      var text="";

     var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
            for( var i=0; i < num; i++ )
            {
              text += possible.charAt(Math.floor(Math.random() * possible.length));
            }      
}

也请参考此Generate random string/characters in JavaScript

编辑:

    <html>
    <head>
    </head>
    <body>
    <input type="Textbox" id="pwbx" />
    
    <button OnClick="GetRandom()" type="button">generate</button>
    <script>
    function GetRandom(min, max) {

          num=  Math.ceil(Math.random()*3)+14;

          var text="";

         var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
                for( var i=0; i < num; i++ )
                {
                  text += possible.charAt(Math.floor(Math.random() * possible.length));
                }     
    document.getElementById("pwbx").value=text ;

 
    }

    </script>
    </body>
    </html>

答案 2 :(得分:1)

function get(str1){
    var arr = str1.split("")
    arr.sort(function(){ return Math.random() - 0.5;})
    var str = arr.join("");
    return str
}
get('abcdefgh0123456789')

答案 3 :(得分:0)

使用此

var chars=['a','b','c'];
var number=getRandomInt(14, 16); 
var result=randomString(number, chars)

function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min)) + min;
}
function randomString(length, chars) {
    var result = '';
    for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];
    return result;
}

答案 4 :(得分:0)

只需随意做一下你的字符长度。然后迭代多次获得随机字符。

var myString = '';
var myStringLength = 14 + (Math.random() * 2); // characters
for (var i = 0; i<myStringLength; i++) {
    var n= Math.floor(Math.random()*62);
    if(n<10) myString += n; //1-10
    else if(n<36) myString += String.fromCharCode(n+55); //A-Z
    else myString += String.fromCharCode(n+61); //a-z
}