这是我下面的代码。它会从数组中随机生成一个包含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>
答案 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(' ');