iOS:在特定范围之间生成随机数组

时间:2014-05-27 11:29:42

标签: ios objective-c

我有一个包含80个json对象的数组。我想构建一个新的子数组,它只有4个元素(但每次从80个元素的较大数组中填充不同)只有一个特定的json键。

以下是我的代码:

[arr_sub removeAllObjects];
    [arr_sub addObject:[[arr_main objectAtIndex:currentcount] valueForKey:@"e"]];
    for(int i =1;i<=3;i++)
    {
       //int random = number between 1 to 80 -- how do i generate this ??
        [arr_sub addObject:[[arr_main objectAtIndex:random] valueForKey:@"e"]];
    }

如何生成0到79之间的随机索引?

3 个答案:

答案 0 :(得分:2)

arc4random()将生成0-1之间的随机数,U可以像这样使用它:

int min = 0;
int max = 80;

int randNum = arc4random() % (max - min) + min;

答案 1 :(得分:2)

要在范围内生成随机索引,请使用arc4random_uniform(range)。 在你的情况下:

int random = arc4random_uniform(80);

使用arc4random_uniform()代替arc4random(),它与使用mod运算符没有偏差。也永远不要使用C函数rand(),因为它的结果不是随机的。

但是JSON在哪里? JSON是一种传输表示,在Objective-C中,主要的集合类是NSArrayNSDictionary。收到的JSON通常与类NSJSONSerialization一起转换为这些组合以及如下方法:

+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error

答案 2 :(得分:1)

arc4random是用于生成随机数的函数。

int randomNumber = arc4random()%80;