【发布时间】:2011-05-25 00:22:39
【问题描述】:
假设我有一个字符串列表。如何生成随机的?
【问题讨论】:
-
如果您需要以非重复的方式获取随机字符串(上面未指定),请考虑使用“shuffle”,例如 Fisher-Yates。 (在洗牌之后,您可以从阵列的前面“移动”。)
标签: javascript jquery list
假设我有一个字符串列表。如何生成随机的?
【问题讨论】:
标签: javascript jquery list
你的意思是,获取一个随机数组成员?
var strings = ['a', 'b', 'c'];
var randomIndex = Math.floor(Math.random() * strings.length);
var randomString = strings[randomIndex];
如果你的意思是一个随机字符串,那就有点不同了。
var randomStrLength = 16,
pool = 'abcdefghijklmnopqrstuvwxyz0123456789',
randomStr = '';
for (var i = 0; i < randomStrLength; i++) {
var randomChar = pool.charAt(Math.floor(Math.random() * pool.length));
randomStr += randomChar;
}
当然,您可以跳过 pool 变量并使用 97 ('a'.charCodeAt(0)) 和 122 ('z'.charCodeAt(0)) 之间的随机数(用于小写字母等)执行 String.fromCharCode()。但取决于您想要的范围(小写和大写,加上特殊字符),使用池不太复杂。
【讨论】:
Alex 和 Mahesh 说得对,只是想展示如果我觉得生活很危险,我可以如何实施他们的解决方案。我就是这么做的。
Array.prototype.chooseRandom = function() {
return this[Math.floor(Math.random() * this.length)];
};
var a = [1, 2, 3, 4, 5];
a.chooseRandom(); // => 2
a.chooseRandom(); // => 1
a.chooseRandom(); // => 5
【讨论】:
var randomString = myStrings[Math.floor(Math.random() * myStrings.length)]
【讨论】:
var rand = 0;
var newPic = [];
var pic = [1,2,3] //length = 18 for ( var i=0; i<18; i++ ){
rand = Math.floor(Math.random()*19);
newPic.push(pic[rand-1].slice());
} alert(newPic);
【讨论】: