VC产生足够随机的随机数
随机数在游戏开方面很有用,可惜MS直接提供的Rand,产生随机数不够随机,特别在循环中连续生成,如果以时间作为随机种的话,就显得格外的不随机。
我找到一款开源的产生随机数的库,可以产生整型和浮点随机数,速度还不错。而且作者制作了一个Lib库,经过汇编优化过的,效率比源码的要好。由于原作者发布的代码没有工程文件(老外很多代码没有工程,可能兼容不同平台吧),我建了一个工程,供各位VCFans测试。
如果想了解源码方面的资料,可以访问原作者的网站:http://www.agner.org/random/
RandomDemo (92.5 KiB, 651 hits)
4 条评论
嗯,很好,谢谢
分析得很好
HI,你好,经常关注你的网站,内容很不错
最近你又改动网站拉 ^_^
最近忽然有个问题有点迷惑,还望帮我解释下,谢谢
比如有一个自定义的class 名字为myclass
我可以这样定义指针:
myclass *mycls;
但是还有一种是用new
比如
myclass *mycls=new myclass;
我想问 这两种方式有什么区别?
直接定义myclass *mycls;不一样吗?
反而使用new还要麻烦delete它
首先感谢你对本站的支持。
关于你的问题,我作简要的回答吧。
其实你第一种和第二种用法是一样的,如果直接采用myclass *mycls的是不能直接使用的。这样仅仅是分配了一个指针,但并没有指向任何内容。
而将myclass *mycls=new myclass就在堆上申请一块空间,并且调用了myclass类的构造函数,也就说能通过这句话,你的这个myclass类的对象已经实实在在的存在了。
而第一种情况,仅仅在栈上建立了一个指针,对象还没有产生(没有调用类的构造函数)。如果直接使用的话,是错误的。
产生这个错误的原因是由于你所使用的开发包已帮你创建了对象,而你误以为你自己创建了。
比如:CDC *PDC; pDC = GetDC(this);然后就可以直接使用pDC了,你并没有New什么,其实在GetDC中系统已经帮你产生了DC对象。正因为如此所以你在用完之后要用DeleteDC,否则就会产生资源泄漏。
这样解释不知道你是否能明白我的意思,对照一些C++的书箱和教程,就会很快明白了,如果有什么不明白的地方可以给我写邮件,我的邮件地址在站内可以查到。感谢你的光临。