如何设置math.random函数的规则?

时间:2014-09-09 18:47:42

标签: javascript html

这是我下面的代码。它会从数组中随机生成一个包含11个字符的序列。它正常工作,但我需要它遵循一些规则,比如不重复相同的字符串,而不是重复L和L'(或)R和R'(或)U和U'(或)B和B'连续。请尽力帮助我。     

</HEAD>
<BODY>
    <SCRIPT type="text/javascript">

function makeid(){
    var text = "";
var possible = new Array("R", "R'", "L", "L'", "B", "B'");

for( var i=0; i < 11; i++ )
    //text += possible.charAt(Math.floor(Math.random() * possible.length));
 text += possible[(Math.floor(Math.random() * possible.length))];
return text;
  // alert(Math.floor(Math.random() * possible.length));
}

        </SCRIPT>
        <a href="javascript:makeid()">Alert Random Letter</a>
        <div>
            <SPAN id="txt">

            </SPAN>
        </div>               

</BODY>

1 个答案:

答案 0 :(得分:0)

to&#34;设定规则&#34;您需要拆分单个对并使用last变量,这样您才能确保不再选择相同的随机值。

对于你的rubik的立方体加扰器,你需要使用类似的东西:

var out = [], last = -1, p = [["R", "R'"], ["L", "L'"], ["B", "B'"], ["U", "U'"], ["F", "F'"], ["D", "D'"]], num = 11;
while(out.length !== num){
    rand = Math.floor(Math.random() * p.length);
    if(rand !== last){
        last = rand;
        out.push(p[rand][Math.floor(Math.random() * p[rand].length)]);
    }
}
return out.join(' ');