случайное число от 0 до 20, которое прыгает 4 раза - PullRequest
0 голосов
/ 08 апреля 2011

HI У меня есть запас для генерации случайного числа. У меня есть массив, который содержит 20 переменных, и я хочу выбрать случайный выбор в этом диапазоне с условием, что он переходит через каждые 4 переменные.случайное число должно быть либо (0, 4, 8, 12 или 16) ??Как мне это сделать ?мой массив типа NSArray ...

Спасибо,

Ответы [ 6 ]

3 голосов
/ 08 апреля 2011
int random = (arc4random() % 5)*4;
1 голос
/ 08 апреля 2011

Используйте приведенный ниже блок кода

int randomNum;
do 
{
  randomNum = arc4random() % 17; //Ensure --> Your number will be in the range (0-16)
}while(randomNum % 4 == 0) //Must be the multiple of 4 means ----> { 0,4,8,12,16}
0 голосов
/ 08 апреля 2011

int random = (arc4random ()% 5) * 4;

Для Ex-

если случайное число равно 0, тогда вы получите 0 * 4 = 0

если случайное число равно 1, то вы получите 1 * 4 = 4

если случайное нет равно 2, то вы получите 2 * 4 = 8

0 голосов
/ 08 апреля 2011

Как это

NSArray *numbers = [NSArray arrayWithObjects:[NSNumber numberWithInt:0], [NSNumber numberWithInt:4],[NSNumber numberWithInt:8],[NSNumber numberWithInt:16],nil];

int myRandom0to16 = [[numbers objectAtIndex:arc4random()%numbers.count] intValue];
0 голосов
/ 08 апреля 2011

Я думаю, что лучший способ - сохранить ваши "случайные числа" в

новый NSArray: [0, 4, 8, 12, 16] .

Затем вы можете сгенерировать стандартное случайное целое число , например

int r = arc4random() % 5;

в диапазоне от 0 до 4 и косвенным образом извлекает нужные вам "случайные числа" из определенного NSArray.

В противном случае вы можете использовать мощность или другие арифметические вычисления, чтобы получить желаемый результат и т. Д., Но зачем тратить усилия на вычисления, если вы знаете, что вам нужно всего 5 кандидатов?

0 голосов
/ 08 апреля 2011

Вы можете использовать int r = arc4random() % 20; для получения случайного числа. Затем, когда вы захотите получить другое случайное число, проверьте предыдущее полученное вами число и используйте его в соответствии с вашими потребностями

...