2013-08-20 2 views
0

Я использую следующий код, чтобы скрыть UIButton от моего rand_btns NSMutableArray.случайное число не повторяется

int random = arc4random_uniform ([rand_btns count]); 

if (random != level - 1) { 
    [[rand_btns objectAtIndex:random] setHidden:YES]; 
} else { 
    // call again this method 
} 

Он отлично работает, но ... он повторяется. Как я могу прекратить повторять ИЛИ, чтобы проверить, был ли UIButton из моего массива rand_btns скрыт, не нужно снова включать этот объектAtIndex.

Я имею в виду, что если использовать мой код, я могу скрыть случайную кнопку из моего массива, за исключением конкретного объектаAtIndex.

Я хотел бы не повторять СНОВА чем число от междунар случайного

ответ

2

Вы можете обратиться к этой Non-repeating arc4random_uniform. Если вы хотите проверить, скрыта ли ваша кнопка или нет, вы можете проверить свойство button.hidden.

+0

Как я могу проверить кнопку из массива, если она скрыта? –

+0

UIButton * b = (UIButton *) [rand_btns objectAtIndex: random]; if (b.hidden) NSLog (@ «Ваша кнопка скрыта»); –

1

Случайные числа могут повторяться, так как они случайны. Вероятно, вам нужно провести список случайных чисел, которые вы обслуживали до сих пор, и когда вы хотите, чтобы новый номер продолжал пытаться, пока вы не получите номер, которого нет в списке. Также будьте осторожны, если вы ищете номер, которого у вас еще не было, то рано или поздно вы столкнетесь с бесконечным циклом, поскольку в конечном итоге не будет больше «свободных» чисел в диапазоне, который вы хотите

2

Если вы хотите случайную последовательность чисел, которая не повторяется, один из способов сделать это - заполнить массив последовательными числами и затем перетасовать список, чтобы числа упорядочивались случайным образом. Таким образом, вы знаете, что каждое число встречается только один раз, но вы не можете предсказать порядок появления чисел.

+0

И если вы пробегаете всю последовательность, перетасуйте и повторите. – pjs

+0

Справа. Числа не обязательно должны быть последовательными, просто монотонно увеличиваться (чтобы вы знали, что они уникальны). Затем вы производите случайный порядок заказа. – Caleb

Смежные вопросы