2014-12-13 2 views
0

Я знаю, что в Matlab существует функция randperm, которая в основном возвращает случайную перестановку чисел.Randperm in iOS

Например, randperm (6) возвращает [3 2 6 4 1 5].

Есть ли что-то подобное в iOS?

ответ

1

Для этого:

- (NSArray*) randperm: (int) total 
{ 
    NSMutableArray *array = [[NSMutableArray alloc] init]; 
    int counter = 0; 
    while (counter < total) { 
     NSNumber *randomInteger = [NSNumber numberWithInt:(arc4random_uniform(total)+1)]; 
     if (![array containsObject:randomInteger]) { 
      [array addObject:(randomInteger)]; 
      counter++; 
     } 

    } 
    return array; 
} 
+0

numberWithInteger: более 'правильный' – gaussblurinc

+0

@gaussblurinc что у виду? – lakesh

+0

NSNumber: :(numberWithInteger :) метод использует NSInteger как номер 'seed'. вы не знаете, где ваш код может выйти из строя, если вы используете примитивы типа 'int'. NSInteger поддерживается альтернативой 'int' primitive – gaussblurinc