Random 随机分配3个变量
我有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=随机值。然后:Random 随机分配3个变量,random,logic,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.rando
if (a == b)
{
do
{
c = (int)(Math.random()*3);
} while (c == a);
} else
{
do
{
c = (int)(Math.random()*3);
}while (c == a || c == b);
}
这是最好的方式吗?否则我怎么做呢?(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);
}
这将是“一致”随机的
说明:
我们首先从三个选项中随机选择
a
和b
。对于c
,我们只有一个或两个选择,这取决于a
是否等于b
。我们为c
掷骰子,并找到c
适合的位置。您可以首先为c
赋值,然后在此基础上,随机分配其他变量:
c = random.nextInt(3) + 1;
do
{
a = random.nextInt(3) + 1;
} while(a == c);
do
{
b = random.nextInt(3) + 1;
} while(b == c);