测验应用程序 - 如何从6个错误答案的数组中选择3个错误答案?

时间:2013-08-14 18:35:25

标签: ios objective-c

我正在尝试制作一个测验应用程序而且我是IOS的新手。我想从一个特定问题的6个错误答案的数组中得到3个错误的答案,并且每个问题将有1个正确的答案。我想要每次显示问题时随机选择错误的选项。每次显示问题时,应用程序将从数组中选择3个错误的选项和1个正确的答案。我如何编码?如果你可以帮我这个,我会很高兴的

谢谢..

{
    int counted = [theOptions count];

    int i;



    NSMutableArray *indexes = [[NSMutableArray alloc] initWithCapacity:counted];

    for (i=0; i<counted; i++) [indexes addObject:[NSNumber numberWithInt:i]];
    NSMutableArray *shuffle = [[NSMutableArray alloc] initWithCapacity:counted];
    while ([indexes count])
    {
        int index = rand()%[indexes count];
        [shuffle addObject:[indexes objectAtIndex:index]];
        [indexes removeObjectAtIndex:index];
    }

    NSMutableArray* shuffledOptions = [[NSMutableArray alloc] initWithCapacity:4];
    for (int i=0; i<counted; i++)
    {
        int randomIndex = [[shuffle objectAtIndex:i] intValue];
        [shuffledOptions addObject:[theOptions objectAtIndex:randomIndex]];
        UIButton* optionButton = [_optionsButtonsArray objectAtIndex:i];
        optionButton.tag = randomIndex;

    }
    return shuffledOptions;

}

return theOptions;}

2 个答案:

答案 0 :(得分:0)

如果您有6个错误答案的数组,并想随机选择其中的三个

NSArray *answers = [NSArray arrayWithObjects:@"Wrong #1", @"Wrong #2", @"Wrong #3", @"Wrong #4", @"Wrong #5", @"Wrong #6"];
NSMutableArray *output = [[NSMutableArray alloc] init];
int r;
while (output.count < 3) {
r = arc4random_uniform(5);
if (![output containsObject:[answers objectAtIndex:r]]) {
[output addObject:[answers objectAtIndex:r]];
}}

答案 1 :(得分:0)

最简单的方法是选择0-5之间的随机数,然后选择另一个随机数。如果下一个是第一个的副本,则重复上一步骤。再做一次,你现在有三个0-5的独特随机数。

更聪明的方法是将数字1-5存储在数组中。对数组进行随机播放,然后返回前三个索引。

祝你好运。