我有一個數組,我想隨機將數組中的項目放入兩個具有相同大小的列表中,我正在考慮將項目放入兩個數組中,但不確定是否這樣是最好的主意。除了將它放入數組中,我該如何編寫stament或while循環來從數組中獲取所有對象,並將其放入兩個數組或列表中。我如何隨機地將一個列表分爲兩個列表
編輯
我想有兩個列表劃分主列表。隨着減半在一個列表中的項目,並在其他列表中的其他減半,我想選擇是隨機的
我有一個數組,我想隨機將數組中的項目放入兩個具有相同大小的列表中,我正在考慮將項目放入兩個數組中,但不確定是否這樣是最好的主意。除了將它放入數組中,我該如何編寫stament或while循環來從數組中獲取所有對象,並將其放入兩個數組或列表中。我如何隨機地將一個列表分爲兩個列表
編輯
我想有兩個列表劃分主列表。隨着減半在一個列表中的項目,並在其他列表中的其他減半,我想選擇是隨機的
NSMutableArray *temp = [[NSMutableArray alloc] initWithArray:originalArray copyItems:TRUE];
NSMutableArray *list1 = [[NSMutableArray alloc] init];
NSMutableArray *list2 = [[NSMutableArray alloc] init];
while(temp.count > 0){
int index1 = arc4random_uniform(temp.count);
[list1 addObject:[temp objectAtIndex:index1]];
[temp removeObjectAtIndex:index1];
if(temp.count != 0){
int index2 = arc4random_uniform(temp.count);
[list2 addObject:[temp objectAtIndex:index2]];
[temp removeObjectAtIndex:index2];
}
}
現在你將留下2門陣列(列表1和列表2),與內容分開隨機在2個陣列
希望我正確地解釋你的問題,havnt測試的代碼在所有的,應在理論工作
爲什麼2個指針temp1,temp2?都指向相同的原始數組。 – 2013-03-13 12:51:09
對,那些臨時表是原始數組的副本 – Fonix 2013-03-13 12:54:18
很好的答案。我不夠清楚。有關更多信息,請參閱更新的答案 – user1898829 2013-03-13 13:32:17
假設你原來的陣列有偶數個Elemnets的:
NSMutableArray *list1 = [[NSMutableArray alloc] init];
NSMutableArray *list2 = [[NSMutableArray alloc] init];
NSMutableArray *originalArray = [[NSMutableArray alloc] initWithObjects:@"ssjsf1",@"ssjsf2",@"ssj3sf",@"ssj4sf",@"ss5jsf",@"ssj6sf",@"ssj7sf",@"ssj8sf",@"ssj9sf",@"s10sjsf",@"ss11jsf",@"ss12jsf",@"ss12jsf",@"ss12jsf",nil];
NSMutableArray *temp = [[NSMutableArray alloc] init];
int i =0;
for (i = 0; [temp count] < [originalArray count] ; i++){
int r = arc4random_uniform([originalArray count]);
if(!([temp containsObject:[NSNumber numberWithInt:r]]))
{
[temp addObject:[NSNumber numberWithInt:r]];
[list1 addObject:[originalArray objectAtIndex:r]];
if([originalArray count] % 2 == 0)
{
if([list1 count] > ([originalArray count]/2))
{
[list1 removeObjectAtIndex:r];
[temp removeObject:[NSNumber numberWithInt:r]];
}
}
if([originalArray count] % 2 != 0)
if([list1 count] > ([originalArray count]/2 + 1))
{
[list1 removeObjectAtIndex:r];
[temp removeObject:[NSNumber numberWithInt:r]];
}
}
r = arc4random_uniform([originalArray count]);
if(!([temp containsObject:[NSNumber numberWithInt:r]]))
{
[temp addObject:[NSNumber numberWithInt:r]];
[list2 addObject:[originalArray objectAtIndex:r]];
if([originalArray count] % 2 == 0)
{
if([list2 count] > ([originalArray count]/2))
{
[list1 removeObjectAtIndex:r];
[temp removeObject:[NSNumber numberWithInt:r]];
}
}
if([originalArray count] % 2 != 0)
if([list2 count] > ([originalArray count]/2))
{
[list2 removeObjectAtIndex:r];
[temp removeObject:[NSNumber numberWithInt:r]];
}
}
}
NSLog(@"List1 -- %@ \n List 2 --- %@",list1, list2);
願這能幫助你。
這正是我想要的,但我需要它也採取奇數,其中一個列表中有一個項目比另一個更多。 – user1898829 2013-03-13 13:34:54
嘿編輯了奇數的答案也。我已經檢查了它現在的工作。 – 2013-03-13 14:05:20
嘿檢查你的原始數組中的偶數個元素的答案。我爲你編碼並根據你的問題檢查了它的woking。 – 2013-03-13 13:22:36
嘿檢查答案現在完成一個。 – 2013-03-13 14:05:56