使用plist为测验创建随机整数

时间:2011-08-31 17:55:41

标签: objective-c

我想让用户点击一个按钮,以“a +/- b = c”的形式生成一个10个问题的测验,其中a和b的值从+10到-10并且是随机的分配给十个问题。此外,问题应在加法和减法之间随机切换。如何正确填充plist文件?如何使用arc4random用随机整数创建10个问题?

我认为在单列选择器中显示问题会很简单,用户可以在屏幕上滚动问题或只在CGPoint处显示文字。

相反,我创建了一个包含84个不同问题的plist,我想从plist中随机选择10来创建每次用户点击按钮时的测验。到目前为止我有这个:

NSString *plistFile = [[NSBundle mainBundle] pathForResource:@"global" ofType:@"plist"];
NSDictionary *dict = [NSDictionary dictionaryWithContentsofFile:plistFile];
NSLog(@"%@",[dict objectForKey:@"1"]);
NSLog(@"%@",[dict objectForKey:@"2"]);
NSLog(@"%@",[dict objectForKey:@"3"]);

global是plist的名称,@"1"@"2"@"3"等是我放入plist的84 diff Q的名称。如何随机选择84个NSLog中的10个?

1 个答案:

答案 0 :(得分:2)

如果您的密钥只是数字,请使用NSDictionary,而不是使用NSArray。然后你可以做

NSString *randomString = [array objectAtIndex:(arc4random() % [array count])]; 

选择一个随机元素。

然而,如果它只是随机数的不同组合,我会真的建议不要在plist中查找它。手工写出所有这些组合只是浪费时间。这就是计算机的用途!

陈旧但仍然相关的答案:

要生成-1010之间的随机数:

int a = (arc4random() % 21) - 10;

你也可以制作这样的函数:

int randomIntegerInRange(int min, int max)
{
    int range = max - min + 1;
    return min + arc4random() % range;
}