случайные BOOL эффективным способом для cocos2d - PullRequest
8 голосов
/ 06 февраля 2012

Согласно посту Штеффена , это эффективный способ генерировать случайные BOOL s в cocos2d

+(BOOL) getYesOrNo
{
   return (CCRANDOM_0_1() < 0.5f);
}

а как мне установить диапазон для этого? (например, 0 - 29 это интервал и 5 единиц BOOL = NO, 25 единиц BOOL = YES)

Ответы [ 3 ]

14 голосов
/ 06 февраля 2012

вы можете сделать что-то вроде этого:

+(BOOL) getYesOrNo
{
    int tmp = (arc4random() % 30)+1;
    if(tmp % 5 == 0)
        return YES;
    return NO;
}
3 голосов
/ 06 февраля 2012

Вы должны использовать arc4random для генератора случайных чисел.

#include <stdlib.h>

     u_int32_t
     arc4random(void);

Функция arc4random () использует генератор потока ключей, используемый шифр arc4, который использует 8 * 8 8-битных S-блоков. S-коробки могут быть примерно в (2 * 1700) штатах. Функция arc4random () возвращает псевдо- случайные числа в диапазоне от 0 до (2 * 32) -1, и, следовательно, имеют двойной диапазон рандов и случайных чисел.

-(BOOL)foo4random
{
u_int32_t randomNumber = (arc4random() % ((unsigned)RAND_MAX + 1));
if(randomNumber % 5 ==0)
    return YES;
return NO;

}

Для получения дополнительной информации о arc4random введите

man arc4random

на терминале.

0 голосов
/ 09 января 2019

Следующий код сгенерирует случайное значение bool:

-(BOOL) randomBool
{
    int tmp = (arc4random() % 10);
    if(tmp % 2 == 0)
        return YES;
    return NO;
}
...