Цель: получить массив, чтобы перетасовать себя, когда NSUInteger * текущий итерации по окончательному индексу. Любая помощь была бы потрясающей.Repeat Array Shuffle
- (IBAction)buttonPressed:(id)sender {
[self buttonMechanics];
}
- (void) generateArray {
NSUInteger count = [box count];
for (NSUInteger i = 0; i < count; ++i) {
NSUInteger nElements = count - i;
NSUInteger n = (arc4random() % nElements) + i;
[box exchangeObjectAtIndex:i withObjectAtIndex:n];
}
}
- (void) buttonMechanics {
if(current + 1 < [box count])
{
current++;
post = [box objectAtIndex: current];
[showItemLabel setText: post];
}
}
@end
Спасибо за вход. (Void) generateArray - это то, что я думал, уже алгоритм Shuffle Fisher-Yates. Он отлично функционирует для процесса рандомизации, но я не понимаю, как заставить массив повторно перетасовать себя, как только он будет повторен. – scott
Вы просто назовете свой метод перетасовки (после того, как вы разложите свой тасовку в свой метод) несколько раз, возможно, в маленьком цикле, в зависимости от количества раз, которое вы хотите перетасовать. –
Спасибо. Я просто борюсь с тем, где поставить цикл или несколько вызовов. Я пробовал различные подходы, но независимо от того, что я делаю, как только итератор попадает в последний индекс массива, он просто остается на месте. – scott