随机数据生成

本科和研究生读的都是计算机,但代码写的很少,动手能力一直很弱。还有一年多毕业,想做成点什么事情,证明一下自己.从今天开始。每天都写点东西,不积跬步,无以至千里。

最近在读刘汝佳的《算法竞赛入门经典》,就先把觉得有用的摘录下来。

研究生入学的时候准备过一段时间的算法题目,当时是在九度上做的,100道左右,有的也不是很理解,从网上搜的别人的代码。关于测试,只是在本地自己随便想几组数据,差不多就提交,如果wa,再回过头来调,很不靠谱。随机数很早就接触过,但从来没想过可以自己生成一个文件,交给两个不同实现的算法,然后对比两者的输出,确定自己对题目的理解对不对。

srand(time(NULL)); //初始化随机数种子,一般只在程序一开始调用一次

double random() //生成[0,1]之间的均匀随机数
{
    return (double)rand() / RAND_MAX;
}
int random(int m) //生成[0,m-1]之间的均匀随机数
{
    return (int)(random()*(m-1) + 0.5);
}
以前确实都是用rand()%n来生成随机数的,现在看来这样不能保证是均匀的,而且rand()产生的是[0,RAND_MAX]之间的均匀随机数,当n>RAND_MAX时,是有问题的。

你可能感兴趣的:(随机数据生成)