高质量的c++随机数生成方法
2017-01-15 15:37
435 查看
随机数用的场合非常多,比如卷积神经网络算法中,初始的卷积核权值就是随机数;图像处理上的柏林噪声,要用到随机数;微信抢红包嘛,谁抢的多、谁抢的少,拼人品、拼手气,其实拼的是程序背后的随机数。如果觉得c++自带的rand()生成的随机数不理想,想使用高质量的快速随机数产生器boost::mt19337,但又没有安装boost库,然后又不想用c++ 11,那怎么办?用下面这个吧,这个应该和boost::mt19337是一样的,但本人没有具体去验证。下面是代码示例,用法非常简单,设定随机种子后,就可以各种使用了。
程序运行结果如下:
工程下载链接:http://download.csdn.net/detail/u013085897/9738108
#include "stdafx.h" #include <stdlib.h> #include <time.h> #include "mt19937ar.h" int main() { // 系统自带随机数生成 printf("default...\n"); srand((unsigned int)time(NULL)); for (int i = 0; i < 10; i++) { printf("%d: %d\n", i, rand()); } // mt19937随机数生成 printf("\nmt19937...\n"); init_genrand((unsigned long)time(NULL)); for (int i = 0; i < 10; i++) { printf("%d: %f %d\n", i, genrand_real1(), genrand_int31()); } system("pause"); return 0; }
程序运行结果如下:
工程下载链接:http://download.csdn.net/detail/u013085897/9738108
相关文章推荐