我在用Cocos2d-x的引擎开发游戏。(当然我是一个菜鸟 刚大三)
问题一:虽然我运用了随机数,随机出现1~5之间的一个数,但是我发现,我无论怎么调试我的程序,它还是和第一次随机出现的数字一样,也就是不具有随机性。
在网上一插 才发现原来计算机是伪随机数。这些百度 第一个 就有介绍,我就不赘述了
直接上解决办法 : 随机数种子
//初始化随机种子
struct timeval now;
gettimeofday(&now, NULL);
//timeval是个结构体,里边有俩个变量,一个是以秒为单位的,一个是以微妙为单位的
unsigned rand_seed = (unsigned)(now.tv_sec*1000 + now.tv_usec/1000); //都转化为毫秒
srand(rand_seed);
添加上了如上的代码,问题果断解决 。。。。。
但是问题来来,挖掘机技术那家强。。。。
问题二:我要随机0~4 结果是; 004032210023.。。。。
如果我像一个随机数只出现一遍怎么办? 例如 04321 42130 14230 等等
for (int i = 0; i < 5; i++)//遍历easy数组
{
if (List[i] == 0 )
{
for (int f = 0; f <= i; f++) //检测本数组之前是否加载过相同的值
{
if (List[f] == Num)
{
log("重新遍历前的Num = %d",Num);
Num = rand()%10;
f = 0; //出现相同的就重新生成,重新遍历
log("重新遍历,新的Num = %d",Num);
}else{continue;}
}
lList[i] = Num;
return List[i];
}
}
然后 就解决了 是不是很开心!!!!!