int rand(void); 返回 0 ------- RAND_MAX 之间的一个 int 类型整数,该函数为非线程安全函数。并且生成随机数的性能不是很好,已经不推荐使用。
       void srand(unsigned int
seed);          设置种子值,一般与“当前时间|进程ID”作为种子,如果没用调用该函数,则通过rand返回的默认种子值为1
    long int random(void);    官方推荐使用的函数为 :返回 0 ------- RAND_MAX 之间的一个 long 类型整数,该函数会产生一个非常大的随机
       void
srandom(unsigned int seed);    设置种子值,一般与“当前时间 |进程ID”作为种子,如果没用调用该函数,则通过random返回的默认种子值为1。当你多次调用srandm(x)时,如果x取值相同,则得到的随机数数列是一样的。所以,若我们每次运行程序时,要得到不同的随机数序列,就应该用不同的种子来初始化这个随机数产生器。比如说,用时间初始化它srandom(time(NULL)),或者用getpid(),用进程的pid号初始化,由于每次运行程序时,它的pid号一般是不同的,所以能够产生不同的随机数序列。

使用方法 :

假如你想产生 1 ------10 之间的一个随机数, 你应该像下面这样编码

j = 1 +
(int) (10.0 * (rand() / (RAND_MAX + 1.0)));

而不是下面这样的代码
   j = 1 + (rand() % 10);

结论:

如果你使用 srandom 种植种子,则你应该使用 random 返回随机数,如果你使用 srand 种植种子,则你应该使用rand返回随机数。

不过srandrand官方已经不推荐使用。原因是产生随机数的性能不是很好,另外是随机数的随机性没有random好,再者就是不是线程安全。例如:

(void) srandom( (int) time( (time_t*) 0 ) );
to64( &salt[0], random(), 2 );

最新文章

  1. 说说React
  2. 在C语言中嵌入汇编语言
  3. mysql导入数据库
  4. Entity Framework 学习整理(分播客整理)
  5. ASP.NET 发送email
  6. ELT工具Kettle之CDC(Change Data Capture)实现实例
  7. loj6271「长乐集训 2017 Day10」生成树求和 加强版
  8. 一起学Android之Sqlite
  9. elsticsearch在kibanna中的操作
  10. redis.Redis与redis.StrictRedis区别
  11. cowboy源码分析(二)
  12. linux下open-vswitch安装卸载操作
  13. python,获取用户输入,并且将输入的内容写到.txt
  14. Django之setting文件
  15. MySQL Unable to convert MySQL datetime value to System.DateTime 解决方案
  16. 保存数据到Excel中
  17. ECharts 报表事件联动系列四:柱状图,折线图,饼状图实现联动
  18. Django之视图层介绍
  19. activiti 用户手册中 10分钟 小例子 简单代码搭建 及 其中的 各种坑
  20. R语言常用基础知识(入门)

热门文章

  1. 洛谷 P3345 [ZJOI2015]幻想乡战略游戏 解题报告
  2. Redis的List链表类型命令
  3. Linux下C高手成长过程----经典书籍推荐
  4. python基础----面向对象的程序设计(五个阶段、对小白的忠告、关于OOP常用术语)、类、对象
  5. python基础----__slots__方法、__call__方法
  6. C++之基础知识20170830
  7. 【目标检测大集合】R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记
  8. 洛谷P1029 最大公约数和最小公倍数问题
  9. C++实现人员信息管理系统模拟
  10. 「HTML5」url、href、src区别