我想在另一个数组中添加一个数组但随机,我希望我的第二个数组的项目与第一个数组的项目简单混合,怎么办?我到处搜索但没有回复
答案 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]
是否为空,并相应地添加您的元素。