Chinaunix首页 | 论坛 | 博客
  • 博客访问: 490884
  • 博文数量: 23
  • 博客积分: 398
  • 博客等级: 一等列兵
  • 技术积分: 850
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-03 22:18
文章分类

全部博文(23)

文章存档

2013年(9)

2012年(14)

分类: C/C++

2012-10-10 11:00:13

     很久之前看《linux C 编程实战》中关于BT下载时发现,需要随机选择一个piece(文件逻辑上分成大小相同的块)进行下载,有一个功能就是要获取某一范围的随机数,现在把关于随机数的生成总结一下方便以后复习,呵呵。

c/c++

点击(此处)折叠或打开

  1. // 随机数的生成
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include <iostream>
  6. using namespace std;


  7. //    随机生成某范围的随机整数,调用前记得srand设置种子
  8. int range_random(int start, int end)
  9. {
  10.     return    ( start + rand() % (end - start + 1) );
  11. }

  12. int main()
  13. {
  14.     float num;
  15.     int i, length = 10;

  16.     /* 产生随机数前,必须先利用srand()初始化随机数发生器,
  17.      * 这样以time函数值(即当前时间,也可以用getpid()),给rand()提供种子,
  18.      * 如果未设随机数种子,rand()在调用时会自动设随机数种子为1,
  19.      * 多次运行所得随机数相同(因为rand根据随机数种子生成伪随机序列的)
  20.      */
  21.     srand((unsigned)time(NULL));

  22.     // 生成十个(0,length)之间的浮点数
  23.     for(i = 0;i < 10;i++)
  24.     {
  25.         // rand()会返回一随机数值,范围在0至RAND_MAX 间
  26.         // RAND_MAX 在stdlib.h中定义,其值为0x7FFF ,有一注释
  27.         /* Maximum value that can be returned by the rand function. */
  28.         num = length * ( rand() / (RAND_MAX+1.0) );
  29.         cout << num << endl;
  30.     }
  31.     cout << endl;

  32.     // 如果要随机生成某范围的整数
  33.     int rd = range_random(3, 9);
  34.     cout << rd << endl;

  35.     return 0;
  36. }


阅读(2955) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~