-5

配列があり、配列内の項目を同じサイズの 2 つのリストにランダムに配置したい 項目を 2 つの配列に配置することを考えていますが、これが最善のアイデアであるかどうかはわかりません。配列に入れる以外に、配列からすべてのオブジェクトを取得して 2 つの配列またはリストに入れるには、for 文または while ループをどのように記述すればよいでしょうか。

編集

メインリストを2つのリストに分けてほしい。一方のリストのアイテムを半分にし、もう一方のリストの残りの半分を使用して、選択をランダムにしたい

4

2 に答える 2

1

元の配列に偶数のElemnetがあると仮定します。

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);

これがお役に立てば幸いです。

于 2013-03-13T13:20:17.083 に答える