我需要生成两个不同的随机数,它们不能彼此相等,也不能等于第三个数字。我尝试使用很多if来覆盖所有可能性,但是,看来我的算法技能不是那么好。
谁可以帮我这个事?
var numberOne = Math.floor(Math.random() * 4); var numberTwo = Math.floor(Math.random() * 4); var numberThree = 3; // This number will not always be 3 if((numberOne == numberThree) && (numberOne + 1 < 3)) { numberOne++; } else if ((numberOne == numberThree) && (numberOne + 1 == 3)) { numberOne = 0; } if ((numberOne == numberTwo) && (numberOne+1 < 3)) { if (numberOne+1 < 3) { numberOne++; } else if(numberThree != 0) { numberOne = 0; } }
这是到目前为止,下一步是:
if (numberTwo == numberThree) { (...) }
我的思路正确吗?注意:生成的数字必须介于0到3之间。
您可以while循环运行,直到所有数字都不同为止。
while
// All numbers are equal var numberOne = 3; var numberTwo = 3; var numberThree = 3; // run this loop until numberOne is different than numberThree do { numberOne = Math.floor(Math.random() * 4); } while(numberOne === numberThree); // run this loop until numberTwo is different than numberThree and numberOne do { numberTwo = Math.floor(Math.random() * 4); } while(numberTwo === numberThree || numberTwo === numberOne);
这是基于@ jfriend00的建议http://jsfiddle.net/x4g4kkwc/1的带有上面代码的jsfiddle 。
这是原始的工作演示:http : //jsfiddle.net/x4g4kkwc/