如何创建一个数组,使3个不同值0,1,2的结果随机化,然后组合出2个
例如: 我有
int values[3] = {0,1,2}
blah = values[arc4random() %3];
我尝试在此网站上的arc4random帮助帖子中使用此功能,但是当我执行上述操作时,应用程序崩溃了。我是arc4random的一个开始,并且无法找到解决方案,因为没有足够的在线文档来帮助我。 此外,我如何从blah中选择2项才能显示?
答案 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也可能符合您的需求。