博舍

教你如何用C++快速生成1000万个随机数 word中怎样快速生成随机数字

教你如何用C++快速生成1000万个随机数

updated:2012.5.10

上个星期天(2012.5.6)中午去华科参加了百度的笔试,试卷的最后一题是问百度搜索框的suggestion提示功能如何实现,用什么数据结构和算法。

我简单地提及了一下TopK。

前段时间看过算法大牛JULY博客中的一些面试题,其中有讲到TopK算法。且《编程之美》中也有一节专门讲解TopK。现如今百度也考到了,说明TopK算法真的是太重要了。可惜之前都只是粗浅地看了一遍,没有彻底领悟。现在正在着手于TopK的学习,代码写好了需要海量测试数据,上哪找呢?哼哼,当然是自己写程序生成啦。下面将介绍一种方法来随机生成1000万个随机数,并将数据保存到文件data.txt中,方便我们随时进行测试。

精华部分:

srand(unsigned(time(0));//随机种子,为了提高不重复的概率  rand()%(MAX-MIN+1)+MIN;               //生成的随机数值在MIN和MAX之间(包含MIN,MAX)

请直接看代码,所有重要信息均在上面。

/*本程序实现的功能:生成1000万个可能重复的随机数,用作测试数据并计算生成这些数据所用的时间*/#include#include//time.h也可,用于计算程序运行时间和生成随机种子数usingnamespacestd;#defineSELF_RAND_MAX0x7FFFFFFFintmain(){ //typedeflongclock_t clock_tstart_time=clock();//计时开始    srand(unsigned(time(0)));//生成时间种子 //生成的数值在1000到1000万之间   constintMAX=10000000;   constintMIN=1000;   /*读入数据freopen("in.txt","r",stdin);  //写入数据freopen("out.txt","w",stdout); //fclose(stdin);//关闭文件   //fclose(stdout);//关闭文件   把标准输入流stdin重定向到in.txt文件中, 这样在用scanf或是用cin输入时便不会从标准输入流读取数据, 而是从in.txt文件中获取输入。 只要把输入数据事先粘贴到in.txt,调试时就方便多了。   */ freopen("data.txt","w",stdout); //cout

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇