stdlib.h头文件中有宏#define RAND_MAX 0x7fff rand()产生一个0到0x7ffff即0到32767之间的随机数 rand()/(RAND_MAX+1.0)就等于一个0到1之间的小数了,因为rand()最大是32767最小是0,再除以32768就是一个0到1之间的小数(不能等于1),再乘以10就是一个0到10之间的数了(不等于10).最后再加1,就成了一个求1到10之间随机数的式子了.

srand函数是随机数发生器的初始化函数,原型: void srand(unsigned seed); 它需要提供一个种子,如: srand(1); 直接使用1来初始化种子。不过常常使用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:00:00 GMT, January 1, 1970 到现在所持续的秒数,然后将time_t型数据转化为(unsigned)型在传给srand函数,即: srand((unsigned) time(&t)); 还有一个经常用法,不需要定义time_t型t变量,即: srand((unsigned) time(NULL)); 直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的t数据。srand((int)getpid()); 使用程序的ID(getpid())来作为初始化种子,在同一个程序中这个种子是固定的 随机输出十个0-100之间的整数 #include <stdlib.h> #include <stdio.h> #include <time.h> void main( void ) { int i,k;srand( (unsigned)time( NULL ) ); for( i = 0; i < 10;i++ ) { k=rand()%100; printf( " k=%d\n", k ); } }




 
RAND_MAX[1]是 C 语言标准库 <stdlib.h> 中定义的一个宏。经预编译阶段处理后,它展开为一个整数类型的常量表达式。
RAND_MAX 是 <stdlib.h> 中伪随机数生成函数 rand 所能返回的最大数值。这意味着,任何一次对 rand 的调用,都将得到一个 0~RAND_MAX 之间的伪随机数。
RAND_MAX在VC++6.0下的输出结果

ISO IEC 9899 2011 (C11)标准中未规定 RAND_MAX 的具体数值。但该标准规定了RAND_MAX 的值应至少为32767。编程的时候,不应该对 RAND_MAX 的具体数值做任何假设。

rand 返回 0~RAND_MAX 之间的随机数。要得到一个 0~1.0 之间的随机浮点数,一种简单的做法是:
/* C语言 */
(double)rand() / RAND_MAX// C++
static_cast<double>(rand()) / RAND_MAX
下面是一个符合 C99 标准的完整 C 语言实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h> // printf
#include <stdlib.h> // srand, rand, RAND_MAX, EXIT_SUCCESS
#include <time.h> // time
#define COUNTS (10)
int  main( void )
{
     double  pseudo_random_numbers[COUNTS] = { 0.0 };
     int  i = 0;
    
  /* 初始化伪随机数生成器 */
     
     srand ((unsigned  int ) time (NULL));
     
     
    /* 产生 COUNTS 个 0.0~1.0 之间的随机浮点数 */
    
for (i = 0; i < COUNTS; i++)
         pseudo_random_numbers[i] = ( double ) rand () / RAND_MAX;
  
   
for (i = 0; i < COUNTS; i++)
         printf ( "%f\n" , pseudo_random_numbers[i]);
     
     return  EXIT_SUCCESS;
}

												

srand rand RAND_MAX相关推荐

  1. c语言中srand的作用,C语言中srand(), rand(), time()函数  转载

    srand函数 srand函数是随机数发生器的初始化函数. 原型:void srand(unsigned seed); 用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子,后面的r ...

  2. srand rand time函数设置随机值

    计算机没有办法产生真正的随机数的,是用算法模拟,所以你只调用rand,每次出来的东西是一样的.设置一个种子后,根据种子的不同,就可以产生不同的数了.而怎么保证种子的不同呢?最简单的办法当然是用永远在向 ...

  3. [C++学习笔记]C++常见问题大全(二)

    C语言中unsigned和signed在声明时有什么作用. 1.unsigned的作用就是将数字类型无符号化, 例如 int 型的范围:-2^31 ~ 2^31 - 1,而unsigned int的范 ...

  4. 函数极值问题求解——C++实现

    对于一个简单函数来说,例如 ,它的图像存在最大值和最小值,那么给定一个区间我们可以利用以下几种方法进行求解.(0<=x<=100,y的值会给出) 方法1:二分法求解 假定存在极小值在区间内 ...

  5. C++:rand()函数和srand()函数解读

    (1)srand(unsigned int t)这个是设定种子. 因为电脑取随机数是伪随机,只要种子一样,则取出来的数一定一样. 这里用time(0)这个内函数,copy则是返回了当前的时间值. 这个 ...

  6. rand()和srand()关系很简单——一看就明白(通过一个可移植的源码)

    1 函数rand和srand实现及描述 #include <stdlib.h> //供rand()使用的种子数,初值为1 unsigned long int next = 1; /* * ...

  7. rand(),srand()产生随机数

    rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当 ...

  8. C++中随机函数rand()和srand()的用法

    一.rand() 函数名:   rand      功   能:   随机数发生器    用   法:   int rand(void); 所在头文件: stdlib.h 函数说明 : rand()的 ...

  9. C++ rand()函数和srand()函数

    随机数和伪随机的区别 : #include<iostream> using namespace std; #include<string>#include<string& ...

最新文章

  1. 刚毕业的职场萌新应具备这9种技能
  2. Merge Two Sorted Lists
  3. 测绘技术设计规定最新版_公示 | 29家单位申报甲级测绘资质审查意见
  4. 使用Beautifulsoup去除特定标签
  5. 六部门集中约谈8家网约车顺风车平台 要求加快合规步伐
  6. 对自定义SharePoint WebService的总结
  7. Navicat操作SQL server 2008R2文件.bak文件还原
  8. 简单解说思科命令大全
  9. RANSAC算法拟合平面实现
  10. python实现SG滤波
  11. CDR是什么?CorelDRAW矢量绘图
  12. 华为计算机主板,华为鲲鹏920台式机主板亮相:性能配置都亮眼
  13. 超实用!轻松几步修复灰蒙蒙的情侣合照!
  14. html中的阴影怎么使用,css 内阴影怎么做
  15. html5 自动格式化,VSCode插件JS-CSS-HTML Formatter自动格式化代码
  16. Android复杂页面代码拆分方法
  17. 高通SDX12:Keypad按键相关(PowerKey、Reset)
  18. 苹果手机上运行python_手机上运行Python
  19. [win32]c++使用win32开发一个窗口的完整流程【转】
  20. 面向Web服务的游戏设计1:选择适合的Silverlight通信技术

热门文章

  1. 可可直播电视---开通论坛
  2. 程序员与ChatGPT的日常问答
  3. 学习笔记=《你不知道的JavaScript(上卷)第二部分》第一章:关于this
  4. php时间戳与date格式转换
  5. word 合并 两个文件 合并成一个
  6. xHiveAI-A311D:AI开发套件
  7. Atcoder #2362 Splatter Painting(dfs+优化)
  8. 一文学会网络分析——Co-occurrence网络图在R中的实现
  9. 视频剪辑软件哪个比较好用?这几款常用的视频剪辑软件你要知道
  10. 【基于通道-空间注意的高分辨率锐化】