cocos2dx里真正的随机函数
来源:互联网 发布:ios软件闪退 编辑:程序博客网 时间:2024/06/05 08:46
最近在做一个回合制游戏,要实现暴击闪避的判断,这就要一个随机数进行判断比较了。
之前一直在用srand((int)time(0)); rand();的组合,但是这个是以秒为单位的,同秒之内。。基本没区别,毕竟我回合制里边,法师一个aoe,肯定要一个循环瞬间判断给予每个敌人(多对象同时调用rand())的伤害,就是机器再烂。。也不会超过1秒这么大的延迟吧。。就一直要么全闪避,要么全暴击,虽然不是次次这样,但是超过80%是这种雷同情况,让人蛋疼而忧伤。 - -||
所以查资料发现了GetTickCount();这个函数 ,是微妙级的,可用于随机种子srand(GetTickCount());但依然各种雷同,N胞胎,蛋疼而忧伤。。 - -||
很多人都说c/c++里没有真正的随机,除非量子计算机,也就是硬件支持才行。看来只能靠手法解决了。所以试了试,种子里边再加个随机rand(),哇塞~居然成功了~^_^
终极形式,就是用这个作为种子:srand(GetTickCount()+ rand());
经验证,ok的,瞬间多少次,不同对象同时rand(),都结果不同,哇哈哈,当然种子后边这个rand()的要根据需求2次处理,大家随意,重点是这个随机种子的处理。
可惜的是GetTickCount()属于win,打包apk的时候会报错,经测试,简单点的方法是种子函数改为: srand(int(time(0))+ rand());
复杂点的就是利用linux里的clock_gettime函数重新实现一下,代码如下
// 返回自系统开机以来的毫秒数(tick)unsigned long GetTickCount(){ struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);}int main(){ struct timespec time1 = { 0, 0 }; clock_gettime(CLOCK_REALTIME, &time1); printf("CLOCK_REALTIME: %d, %d\n", time1.tv_sec, time1.tv_nsec); clock_gettime(CLOCK_MONOTONIC, &time1); printf("CLOCK_MONOTONIC: %d, %d\n", time1.tv_sec, time1.tv_nsec); clock_gettime(CLOCK_MONOTONIC_RAW, &time1); printf("CLOCK_MONOTONIC_RAW: %d, %d\n", time1.tv_sec, time1.tv_nsec); clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1); printf("CLOCK_PROCESS_CPUTIME_ID: %d, %d\n", time1.tv_sec, time1.tv_nsec); clock_gettime(CLOCK_THREAD_CPUTIME_ID, &time1); printf("CLOCK_THREAD_CPUTIME_ID: %d, %d\n", time1.tv_sec, time1.tv_nsec); printf("\n%d\n", time(NULL)); printf("tick count in ms: %ul\n", GetTickCount()); return 0;}
1 0
- cocos2dx里真正的随机函数
- cocos2dx里真正的随机函数
- cocos2dx中的随机函数
- c++里的随机函数rand()
- cocos2dx 真正的随机数 == cocos2dx 随机数
- 真正意义上的“随机”---c语言
- cocos2dx 里的坐标系统
- cocos2dx里访问调用Android函数
- cocos2dx里访问调用Android函数
- 随机函数的伪随机
- Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- VS2010 通过Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- 真正去掉EXCEL里的小数点
- 不理解话里真正包含的意思
- MSVC里__forceinline的真正作用
- 自定义的随机函数
- 随机函数的用法
- 随机函数的问题
- 2.4.2 地址和地址译码器
- 贪心算法分析
- [Linux-5] gdb常用命令
- 这回是帐号同步异常,血泪经验和教训!
- android-4.0源码编译及内核编译(android-gldfish-2.6.29)
- cocos2dx里真正的随机函数
- Python input和raw_input的区别
- JSP学习1——web发展史(2013.12.15)
- c语言字符串分解
- BP神经网络设计的matlab简单实现
- 把一个句子中的按照标准写作打出来
- linux 获取随机数函数
- MySQL 中 Join 的基本实现原理
- 大数乘法