1

不知道该怎么做,但我需要输出一组字符 x、y 和 z。输出长度为 3 个字符,由 x、y 和 z 组成。但是,这些字符彼此之间的可能性相同。基本上随机输出字符(来自一组,在本例中为 x、y 和 z)。示例输出 - xyy、zzz、yyz 等。我猜我需要一个函数?

4

3 回答 3

1

你可以这样做:

var chars = ['x','y','z'];
function show_chars(arr){
    var l = arr.length;
    return arr[Math.floor(Math.random()*l)] 
       + arr[Math.floor(Math.random()*l)] 
       + arr[Math.floor(Math.random()*l)]
}
console.log(show_chars(chars));
于 2013-05-07T22:24:38.743 回答
1

另一种方法:

演示:http: //jsfiddle.net/VNh7n/1/

function randomXYZ() {
    return 'xxx'.replace(/x/g, function () {
        return String.fromCharCode(Math.floor(Math.random() * 3) + 120);
    });
}

console.log(randomXYZ());
于 2013-05-07T22:38:43.770 回答
0

对于每个字符只出现一次的随机组合:

function shuffleChars(s) {
  s = s.split('');
  var i = s.length;
  var result = [];
  while (i) {
    result.push(s.splice(Math.floor(Math.random() * (i--)),1));
  }
  return result;
}

对于随机组合,其中一个字符可能出现任意次数,直到字符串的长度:

function randomChars(s) {
  s = s.split('');
  for (var i=0, iLen=s.length, result=[]; i<iLen; i++) {
    result[i] = s[Math.random() * iLen | 0];
  }
  return result;
}

randomChars('xyz'); 

以上两者都可以采用任意长度的字符串。

于 2013-05-07T22:59:46.593 回答