随机分配3个变量

时间:2014-02-18 16:48:38

标签: random logic

我有3个变量a,b和c,并希望随机分配3个可能的数字1,2或3.a可能等于b但c可能也不等于。 因此,如果a = 2且= 1,则c = 3。 如果a = 1且b = 1,那么c必须是2或3(随机)。

目前我这样做: a和b =随机值。然后:

if (a == b)
{
    do 
    {
        c = (int)(Math.random()*3); 
    } while (c == a);
} else
{
    do
    {
        c = (int)(Math.random()*3); 
    }while (c == a || c == b);
}

这是最好的方法吗?我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

(1)打电话来生成随机数是你在这里做的最贵的事情,所以你应该尽可能少地做两到三次。

(2)你可能更喜欢java.util.Random,特别是如果你想要int s。

java.util.Random random = new java.util.Random();
int a = random.nextInt(3) + 1;
int b = random.nextInt(3) + 1;
int c = 0;
for(int n = a == b ? random.nextInt(2) : 0; n >= 0; n--) {
    do {
      c++;
    } while(c == a || c == b);
}

这将是“统一”随机的。

<强>解释

我们首先从三个选项中随机选择ab。根据{{​​1}}是否等于ca选择了一个或两个选项。我们为b“掷骰子”并找到c适合的位置。

答案 1 :(得分:1)

您可以先为c分配一个值,然后根据该值随机分配其他变量:

c = random.nextInt(3) + 1;
do 
{
   a = random.nextInt(3) + 1;
} while(a == c);
do
{
   b = random.nextInt(3) + 1;
} while(b == c);