高质量的c++随机数生成方法

来源:互联网 发布:windows电脑唯一标识 编辑:程序博客网 时间:2024/05/29 05:07

       随机数用的场合非常多,比如卷积神经网络算法中,初始的卷积核权值就是随机数;图像处理上的柏林噪声,要用到随机数;微信抢红包嘛,谁抢的多、谁抢的少,拼人品、拼手气,其实拼的是程序背后的随机数。如果觉得c++自带的rand()生成的随机数不理想,想使用高质量的快速随机数产生器boost::mt19337,但又没有安装boost库,然后又不想用c++ 11,那怎么办?用下面这个吧,这个应该和boost::mt19337是一样的,但本人没有具体去验证。下面是代码示例,用法非常简单,设定随机种子后,就可以各种使用了。

#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




0 0
原创粉丝点击