随机BOOL以高效的方式为cocos2d

时间:2012-02-06 10:17:51

标签: objective-c cocos2d-iphone boolean arc4random

根据Steffen's post,这是在cocos2d中生成随机BOOL的有效方法

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

但如何为此设置范围? (例如0 - 29是区间,5个是BOOL = NO,25个BOOL = YES

3 个答案:

答案 0 :(得分:14)

你可以这样做:

+(BOOL) getYesOrNo
{
    int tmp = (arc4random() % 30)+1;
    if(tmp % 5 == 0)
        return YES;
    return NO;
}

答案 1 :(得分:3)

您应该将arc4random用于随机数生成器。

#include <stdlib.h>

     u_int32_t
     arc4random(void);
  

arc4random()函数使用的是密钥流生成器   arc4密码,使用8 * 8 8位S-Box。 S-Box可以   大约(2 * 1700)州。 arc4random()函数返回伪 -        随机数范围为0到(2 * 32)-1,因此有rand和random的两倍范围。

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

}

有关arc4random类型

的详细信息
  

man arc4random

终端

答案 2 :(得分:0)

以下代码将生成一个随机布尔值:

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