2013-05-07 101 views
1

不知道如何去做,但我需要输出一组字符x,y和z。输出长度为3个字符,由x,y和z组成。然而,角色之间的可能性相同。基本上输出字符(从一组,在这种情况下,x,y和z)随机。示例输出 - xyy,zzz,yyz等我猜我需要一个函数?JavaScript - 随机输出字符

回答

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)); 
+0

是的,这正是我所需要的。谢谢。 – user2328058 2013-05-07 22:47:03

+0

@RobG,“输出示例 - xyy,zzz,yyz等”这是来自于这个问题。 – plalx 2013-05-07 22:49:20

1

一种不同的方法:

DEMO: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()); 
+0

'(122 - 120 + 1)'是写作'3'的一种冗长的方式。 – RobG 2013-05-07 23:01:24

+0

@RobG,是的,我希望它是显而易见的,以便OP了解公式,但我忘了解释它= P我想我只是把3,这是非常明智的。 – plalx 2013-05-07 23:07:24

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'); 

任意长度的上述可采取串双方。