如何生成两个不同的随机数? [英] How to generate two different random numbers?

查看:604
本文介绍了如何生成两个不同的随机数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要生成两个不同的随机数,它们不能彼此相等或与第三个数相等。我尝试使用很多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 http://jsfiddle.net/x4g4kkwc/1

Here is the jsfiddle with the above code based on @jfriend00's suggestion http://jsfiddle.net/x4g4kkwc/1.

以下是原始工作演示: http:// jsfiddle。 net / x4g4kkwc /

Here is the original working demo: http://jsfiddle.net/x4g4kkwc/

这篇关于如何生成两个不同的随机数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆