根据在两个对象之间随机选择的结果,在两个对象之间随机选择

时间:2014-11-07 03:44:00

标签: objective-c

好的,这是我到目前为止的代码:

    x = arc4random_uniform(4);
    if (x <= 1){
        LabelA.text = [NSString stringWithFormat:@"1"];
    } else {
        LabelA.text = [NSString stringWithFormat:@"2"];
    }


{
    x = arc4random_uniform(12);
    if (x <= 3){
        LabelB.text = [NSString stringWithFormat:@"3"];
    } else {
        LabelB.text = [NSString stringWithFormat:@"4"];
    }
}

好的,这样做会随机选择1或2,然后随机选择3或4。所以说它选择1和3.我然后想要它在1和3之间随机选择。如果它确实选择1和3我想要它选择1 20%的时间,但如果它选择2和3我想要它70%的时间选择2。因此,对于每场比赛,它将是:

  • 1和3:选择1 20%的时间
  • 1和4:选择1 60%的时间
  • 2和3:选择2 70%的时间
  • 2和4:选择2 30%的时间

然后无论选择什么号码我都希望它是LabelC。所以我基本上试图找出如何编码。我希望这是有道理的,你知道我在做什么,但任何建议都会有所帮助。感谢。

2 个答案:

答案 0 :(得分:1)

如果你有变量x(1或2)和y(3或4),你可以得到你想要的几率,

int z;
if (x==1 && y==3) {
    z= (arc4random_uniform(10) < 2)? 1:3;

}else if (x==1 && y==4) {
    z= (arc4random_uniform(10) < 6)? 1:4;

}else if (x==2 && y==3) {
    z= (arc4random_uniform(10) < 7)? 2:3;

}else if (x==2 && y==4) {
    z= (arc4random_uniform(10) < 3)? 2:4;

答案 1 :(得分:0)

版本较少if的版本......

int a[][3] = {{1,3,2},{1,4,6},{2,3,7},{2,4,3}};

int rand1 = arc4random_uniform(2);
int rand2 = arc4random_uniform(12);
int index = rand1 * 2 + rand2 > 3;

int b = (arc4random_uniform(10)<a[index][2] ? a[index][0] : a[index][1]);
LabelA.text = @(a[index][0]).stringValue;
LabelB.text = @(a[index][1]).stringValue;
LabelC.text = @(b).stringValue;