我有一个大小为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/