您的位置:首页 > 编程语言 > C语言/C++

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

2017-01-15 15:37 435 查看
       随机数用的场合非常多,比如卷积神经网络算法中,初始的卷积核权值就是随机数;图像处理上的柏林噪声,要用到随机数;微信抢红包嘛,谁抢的多、谁抢的少,拼人品、拼手气,其实拼的是程序背后的随机数。如果觉得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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: