在app中随机使用

时间:2010-09-16 17:35:53

标签: iphone

如何创建一个数组,使3个不同值0,1,2的结果随机化,然后组合出2个

例如: 我有

int values[3] = {0,1,2}
blah = values[arc4random() %3];

我尝试在此网站上的arc4random帮助帖子中使用此功能,但是当我执行上述操作时,应用程序崩溃了。我是arc4random的一个开始,并且无法找到解决方案,因为没有足够的在线文档来帮助我。 此外,我如何从blah中选择2项才能显示?

1 个答案:

答案 0 :(得分:2)

好吧,对于一个你错过了;

int values[3] = {0,1,2}; //<-- here
int blah = values[arc4random() %3];
NSLog(@"Value: %d",blah);

其次,上面编译得很好。

第三,我认为你想这样做,但正如@Shaggy Frog所说,你的问题有点不清楚:

int combo[3];
for (int i = 0; i < 3; i++) {
    combo[i] = values[arc4random() %3];
}

哪个应该为您提供values[]中值的随机“组合”。 Combination有一个特定的定义,以及permutation

我相信你想要的是一组从values[]随机选择的3个数字。如果你需要排列,请使用Dijkstra获得舒适。


[编辑]

要获得您在评论中指定的内容,您可以执行以下操作:

int values[3] = {0,1,2}; 
int sum;
switch (arc4random()%3) {
case 0:
    sum = values[1] + values[2];
    break;
case 1:
    sum = values[0] + values[2];
    break;
case 2:
    sum = values[1] + values[0];
    break;
}

[编辑]

或者,你可以这样做:

int values[3] = {0,1,2}; 
int blah[2];
int index;
switch (arc4random()%3) {
case 0:
    index = arc4random()%2;
    blah[index] = values[1];
    blah[1-index] = values[2];
    break;
case 1:
    index = arc4random()%2;
    blah[index] = values[0];
    blah[1-index] = values[2];
    break;
case 2:
    index = arc4random()%2;
    blah[index] = values[1];
    blah[1-index] = values[0];
    break;
}

card drawing algorithm也可能符合您的需求。