我有一个大小为n的NSMutableArray urlArray,我想从数组中的元素总数中随机选择这些URL中的4个。

但是我不想直接改组urlArray,我更喜欢制作一个“ indexArray” [0 ...(n-1)]并改组这些,然后使用改组后的indexArray的前4个元素来确定哪个我从urlArray中选择的元素。

首先,我创建了indexArray,如下所示:

for (int i = 0; i < numberOfStems; i++) {

    [indexArray addObject:[NSNumber numberWithInteger:i]];

}


到目前为止,这让我可以改组indexArray了。因为我用了
[NSNumber numberWithInteger:i]方法中,改组后的indexArray中的元素是NSNumbers。

有没有一种方法可以将indexArray中的NSNumber对象转换为ints?

我试图使用intValue函数,但这似乎不是我所需要的。

我也尝试创建c样式数组,但是也没有那么成功-如果可能的话,我想坚持使用Objective-C语法。

有任何想法吗?任何提示赞赏:)

最佳答案

为什么不创建一个普通的c数组,将其洗牌然后将数组中的前四个整数用作随机索引的原因呢?

就像是

int* index = malloc(numberOfStems*sizeof(int));
for (int i = 0; i < numberOfStems; ++i)
{
   index[i] = i;
}

for (int i = numberOfStems - 1; i > 0; --i)
{
   int randomIndex = arc4random() % i;
   int tmp = index[i];
   index[i] = index[randomIndex];
   index[randomIndex] = tmp;
}


现在使用索引来访问URL的

编辑:更新算法(尽管与OP问题无关)

关于objective-c - 改组NSNumbers数组并转换回int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9057436/

10-09 16:17