8

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

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

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

4

3 回答 3

13

你可以这样做:

+(BOOL) getYesOrNo
{
    int tmp = (arc4random() % 30)+1;
    if(tmp % 5 == 0)
        return YES;
    return NO;
}
于 2012-02-06T10:26:22.457 回答
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类型的更多信息

男人 arc4random

在终端上。

于 2012-02-06T12:16:22.163 回答
0

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

-(BOOL) randomBool
{
    int tmp = (arc4random() % 10);
    if(tmp % 2 == 0)
        return YES;
    return NO;
}
于 2019-01-09T13:18:48.077 回答