随机地将数组添加到另一个数组

时间:2017-05-15 11:47:13

标签: objective-c arrays random insert

我想在另一个数组中添加一个数组但随机,我希望我的第二个数组的项目与第一个数组的项目简单混合,怎么办?我到处搜索但没有回复

2 个答案:

答案 0 :(得分:0)

这很快又脏,但有效。

将两个数组一起添加并循环组合数组。在执行此操作时,将项设置为nsdictionary的随机键,然后返回字典的allValues部分。字典无论如何都不会保留他们的订单,但是随机键入其中似乎有助于它。或者,一旦你在字典中有随机键,按升序值排序然后输出值,可能是“更多”随机。

-(NSArray *)addRan:(NSMutableArray *)one combineWith:(NSArray *)two {

    //add
    [one addObjectsFromArray:two];

    //make random position
    NSMutableDictionary * ran = [NSMutableDictionary new];
    for (NSString * item in one){

        int random = arc4random_uniform((int)one.count);
        while ([ran.allKeys containsObject:@(random)]){
            random = arc4random_uniform((int)one.count);
        }
        ran[@(random)] = item;
    }

    return ran.allValues;
}

这样打电话:

NSArray * ran = [self addRan:[@[@"A",@"B",@"C"] mutableCopy] combineWith:@[@"D",@"E",@"F"]];
NSLog(@"ran is %@", ran);

答案 1 :(得分:0)

我想在另一个数组中添加一个数组,但是随机。

解决方案:要从第二个数组中获取随机元素,首先要计算该数组中的元素数量;然后使用下面的代码得到一个随机数。

int r = arc4random_uniform(count);

您可以使用该整数r从第二个数组中获取随机元素。

对于混合,两个数组中的元素计算两个数组中元素的总数,并创建一个新的NSMutableArray。记得 NSMutableArray不是稀疏数组;它不允许以后可以填充的空槽。所以你可以做的是添加将作为空槽的空对象。

NSMutableArray *mixedArray = [NSMutableArray array];
for(int i = 0; i<10; i++) {
   [mixedArray addObject: [NSNull null]];
}

然后,您可以检查检索到的对象isEqual: [NSNull null]是否为空,并相应地添加您的元素。