微信抢红包算法实现-cocos2d-x版

来源:互联网 发布:电脑怎么隐藏软件 编辑:程序博客网 时间:2024/05/29 07:15

                                 微信抢红包算法实现-cocos2d-x版


我用的是cocos平台做的代码测试的,主要是以下两个实现函数,注释解释的蛮清楚的微笑

float weiXingHongBao::generateRandomNumber()

{

        随机数获取

/*//获取系统时间
struct timeval now;
gettimeofday(&now, NULL);

//初始化随机种子
//timeval是个结构体,里边有俩个变量,一个是以秒为单位的,一个是以微妙为单位的 
unsigned rand_seed = (unsigned)(now.tv_sec * 1000 + now.tv_usec / 1000);    //都转化为毫秒 
srand(rand_seed);

float _rand;
while (CCRANDOM_0_1() != 0.0f)//产生(0,1]的随机数  
{
//转换为两位小数的(0,1]随机小数
/*float pre_rand = CCRANDOM_0_1();
std::string str2 = StringUtils::format("%.2f", pre_rand);//浮点小数先转换为C++字符串
_rand = String::createWithFormat("%s", str2)->floatValue();//C++字符串转换为cocos字符串String,cocos字符串再转换为浮点数*/
_rand = CCRANDOM_0_1();
}
return _rand;*/

}


float* weiXingHongBao::process(float totalMoney, int personNum)
{
float total_random[personNum] = { 0 };


for (int i = 0; i < personNum; i++){
total_random[i] = generateRandomNumber();
}


float sum_random = 0;//随机数(0,1]的总和
for (int i = 0; i < personNum; i++){
sum_random += total_random[i];
}


float ratio = totalMoney / sum_random;//总的钱除以随机数总和
for (int i = 0; i < personNum; i++){
total_random[i] *= ratio ;//将每个人应得的钱存入随机数数组
}


return total_random;//返回数组
}
0 0
原创粉丝点击