Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-从一组指定值生成指定长度的随机数_Javascript_Jquery - Fatal编程技术网

Javascript-从一组指定值生成指定长度的随机数

Javascript-从一组指定值生成指定长度的随机数,javascript,jquery,Javascript,Jquery,我想从一组指定的字符中生成一个长度为32个字符的随机数 例如: var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ"; var string_length = 32; 然后使用指定的字符返回长度为32的随机数 像这样的 var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ"; var string_length = 32; var myrnd = [], pos; // loop as long a

我想从一组指定的字符中生成一个长度为32个字符的随机数

例如:

var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ";
var string_length = 32;
然后使用指定的字符返回长度为32的随机数

像这样的

var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ";
var string_length = 32;
var myrnd = [], pos;

// loop as long as string_length is > 0
while (string_length--) {
    // get a random number between 0 and chars.length - see e.g. http://www.shawnolson.net/a/789/make-javascript-mathrandom-useful.html
    pos = Math.floor(Math.random() * chars.length);
    // add the character from the base string to the array
    myrnd.push(chars.substr(pos, 1));
}

// join the array using '' as the separator, which gives us back a string
myrnd.join(''); // e.g "6DMIG9SP1KDEFB4JK5KWMNSI3UMQSSNT"
查看jsfiddle。我对其进行了修改,以便您可以在结果增长时看到进度:

var chars=“0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ”//潜在角色库
变量字符串长度=32;//期望的结果长度
var num_chars=chars.length;//池中的字符总数
变量结果=“”;//用于存储结果的容器
while(string_length--){//运行循环的持续时间等于结果的长度
//对于每次迭代,获取一个从0到迭代大小的随机数
//使用的字符数,使用该数字获取索引
//,并将其添加到结果的末尾
结果+=字符[数学地板(数学随机()*num_字符)];
}
$('body')。追加(结果+'
);//这只是将结果附加到“body”中 //如果您使用的是jQuery
像这样的东西

查看jsfiddle。我对其进行了修改,以便您可以在结果增长时看到进度:

var chars=“0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ”//潜在角色库
变量字符串长度=32;//期望的结果长度
var num_chars=chars.length;//池中的字符总数
变量结果=“”;//用于存储结果的容器
while(string_length--){//运行循环的持续时间等于结果的长度
//对于每次迭代,获取一个从0到迭代大小的随机数
//使用的字符数,使用该数字获取索引
//,并将其添加到结果的末尾
结果+=字符[数学地板(数学随机()*num_字符)];
}
$('body')。追加(结果+'
);//这只是将结果附加到“body”中 //如果您使用的是jQuery
这里有一个简单的解决方案,应该很容易理解

var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ";
var string_length = 32;
var result = "";

for(var i=0; i<string_length; i++){
  var randomPos = Math.floor( Math.random() * chars.length );
  result += chars.substr(randomPos, 1);
}
var chars=“0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ”;
变量字符串长度=32;
var结果=”;

对于(var i=0;i,这里有一个简单的解决方案,应该很容易理解

var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ";
var string_length = 32;
var result = "";

for(var i=0; i<string_length; i++){
  var randomPos = Math.floor( Math.random() * chars.length );
  result += chars.substr(randomPos, 1);
}
var chars=“0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ”;
变量字符串长度=32;
var结果=”;

对于(var i=0;i可能会使它更灵活一些

您可能希望返回为数组, 如果你要对它做大整数运算

function charsRandom(len, chars){
    chars= chars || "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    len= len || 32;
    var cr= [], L= chars.length;
    while(len--) cr[cr.length]= chars.charAt(Math.floor(Math.random()*L));
    return cr.join(''); // or return the array cr
}

警报(charsRandom())

可能会使它更灵活一些

您可能希望返回为数组, 如果你要对它做大整数运算

function charsRandom(len, chars){
    chars= chars || "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    len= len || 32;
    var cr= [], L= chars.length;
    while(len--) cr[cr.length]= chars.charAt(Math.floor(Math.random()*L));
    return cr.join(''); // or return the array cr
}

警报(charsRandom())

从什么时候开始数字可以包含字母?:)这听起来像是家庭作业。你尝试了什么?你有什么困难?循环?随机性?展示你尝试了什么。顺便说一句,jQuery根本不会参与其中…顺便说一下,你的
字符
字符串中有两个t:-P@Nick:很明显,这是一个base-36数字。我只希望我是个极客,能知道合适的前缀是什么所以我可以说“blahblahdecimal”。:-)(谷歌说“triántaéxidecimal”)@Andy:请告诉我你碰巧看到了。你没有…检查。;-)从什么时候起,数字可以包含字母?:)这听起来像是家庭作业。你试过什么?你有什么困难?环路?随机性?展示你的尝试。顺便说一句,jQuery根本不会参与其中……顺便说一下,您的
chars
字符串中有两个Ts:-P@Nick:很明显,这是一个基数为36的数字。我只希望我是个极客,知道36的前缀是什么,这样我就可以说“blahblahdecimal”。-)(谷歌说“triántaéxidecimal”)@Andy:请告诉我你碰巧看到了。你没有…检查。;-)这显然是个初学者。如果你给出了一个完整的答案,你至少应该在你正在做的事情上做一些评论,因为如果你还在学习基础知识,那么像在
while
条件下倒计时长度或者使用数组并加入数组等事情都不容易理解。这显然是一个初学者。如果你给出了一个完整的答案,你至少应该在你正在做的事情中给出一些注释,因为如果你还在做基础工作,那么像在
while
条件下倒计时长度或者使用数组并加入数组等事情都不容易理解。