根据Steffen's post,这是在cocos2d中生成随机BOOL
的有效方法
+(BOOL) getYesOrNo
{
return (CCRANDOM_0_1() < 0.5f);
}
但如何为此设置范围? (例如0 - 29是区间,5个是BOOL
=
NO
,25个BOOL
=
YES
)
答案 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;
}