我需要生成两个不同的随机数,它们不能彼此相等或与第三个数相等。我尝试使用很多if来涵盖所有可能性,但似乎我的算法技能不是那么好。
I need to generate two different random numbers, they can't be equal to each other or to a third number. I tried to use a lot of if's to cover every possibility but, it seems my algorithm skills are not that good.
任何人都可以帮我吗?
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; } }这是我到目前为止,下一步将是:
This is what I have so far, the next step would be:
if (numberTwo == numberThree) { (...) }我的思路是否合适? 注意:生成的数字需要在0到3之间。提前感谢。
Is my line of thought right? Note: Numbers generated need to be between 0 and 3. Thanks in advance.
推荐答案你可以运行一个 while 循环,直到所有数字都不同。
You can run a while loop until all numbers are different.
// 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建议的上述代码的jsfiddle jsfiddle/x4g4kkwc/1 。
Here is the jsfiddle with the above code based on @jfriend00's suggestion jsfiddle/x4g4kkwc/1.
以下是原始工作演示: http:// jsfiddle。 net / x4g4kkwc /
Here is the original working demo: jsfiddle/x4g4kkwc/
更多推荐
如何生成两个不同的随机数?
发布评论