C语言随机数

  • rand()简介
  • srand()简介
  • 使用

rand()简介

  1. 使用该函数首先应在开头包含头文件<stdlib.h>

        #include<stdlib.h>   //(C++建议使用#include<cstdlib>)
    
  2. 在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。

  3. rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:

      printf("Random numbers are: %i %i\n",rand(),rand());
    
  4. 因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机,有时候也叫伪随机数

  5. 为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过伪随机数生成器提供一粒新的随机种子。函数 srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器

srand()简介

  • rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列

使用

  1. 获得任意一个随机数

    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>int main( )
    {int i=RAND_MAX;int rad = 0;  //随机数printf("RAND_MAX=0x%x\n",RAND_MAX);//输出系统随机数最大值printf("time(0)=%d\n", (int)time(0));srand((int)time(NULL)); // 输出 10 个随机数for( i = 0;   i < 10;i++ ){   rad = rand();  //获得随机数printf( "%6d  ", rad);}printf( "\n");return 0;
    }
    

    结果

    RAND_MAX=0x7fffffff
    time(0)=1548502879
    time(0)=1548502879
    234191850  263033491  1753408912  1882350075  370681173  1134876452  907350243  1251304670  206911739  628201936
    
  2. 获得[a,b]之间的随机整数

    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>#define a 100
    #define b 200int main( )
    {int i=RAND_MAX;int rad = 0;  //随机数printf("RAND_MAX=0x%x\n",RAND_MAX);printf("time(0)=%d\n", (int)time(0));srand((int)time(NULL)); /* 输出 10 个随机数. */printf( "[a,b): ");for( i = 0; i < 10;i++){   rad = rand()%(b-a)+a; //获得随机值printf( "%6d  ", rad);}printf( "\n");printf( "[a,b]: ");for( i = 0; i < 10;i++ ){   rad = rand()%(b-a+1)+a;  //获得随机值printf( "%6d  ", rad);}printf( "\n");return 0;}
    

    结果

    RAND_MAX=0x7fffffff
    time(0)=1548504375
    [a,b):    198     143     105     158     113     159     147     151     172     150
    [a,b]:    125     157     139     102     173     194     147     141     133     180
    
  3. 获得0~1之间的浮点数

    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>int main( )
    {int i = RAND_MAX;double rad = 0.0;   //随机值printf("RAND_MAX=0x%x\n",RAND_MAX);printf("time(0)=%d\n", (int)time(0));srand((int)time(NULL)); /* 输出 10 个随机数.0~1 */for( i = 0;   i < 10;i++ ){   rad =rand() / (double)(RAND_MAX);  //获得随机值printf( "%6f ", rad);}printf( "\n");return 0;}
    

    结果

    RAND_MAX=0x7fffffff
    time(0)=1548504780
    0.890306 0.381427 0.652400 0.403826 0.263737 0.818806 0.225321 0.426782 0.348105 0.761069
    

C语言随机数:rand()和srand(time(NULL))的使用相关推荐

  1. c语言随机数rand函数一探究竟

    c语言随机数rand函数一探究竟 真正的随机数? 测试srand对rand的影响. 这是真的吗? 结论 rand函数是C语言用来产生随机数的函数,一般搭配srand函数使用.使用方法如下: #incl ...

  2. c语言随机数rand,C语言rand()获取随机数和windows下的CryptGenRandom

    是在弄即将发布的一篇博客时顺便弄的,还是先写这个. rand()函数已经被说烂了,包括这里写的,返回一个0到RAND_MAX(在我的电脑上是32767)的整数.srand(unsigned int)可 ...

  3. 随机数rand和srand的用法

    有关于rand函数跟srand函数的用法 #include <stdio.h> #include <math.h> int main(){printf("%d\n&q ...

  4. C语言随机数rand用法,【转载】随机数的产生 c语言rand的用法

    式子如下 : rand = rand*const_1 + c_var; srand函数就是给它的第一个rand值. 用"int x = rand() % 100;"来生成 0 到 ...

  5. C语言之rand()和srand()函数

    1.rand().srand()函数介绍 srand 初始化随机种子,rand 产生随机数 定义函数:int rand(void) 函数功能:产生随机数 函数说明:rand的内部实现是用线性同余法做的 ...

  6. 随机函数的rand、srand用法

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

  7. 【C语言】随机数函数rand和srand

    文章目录 一.随机数函数 1.rand().srand() 2.time() 二.案例实现 1.案例描述 2.代码实现 一.随机数函数 1.rand().srand() C语言产生随机数要用到的函数是 ...

  8. C语言随机数的产生(rand、srand、time函数细节讲解)

    ✨C语言随机数的产生 随机数生成代码: rand函数: srand函数: time函数: time函数补充: time_t类型讨论 time_t指针传入的讨论: 随机数生成代码: 先上代码,再详细解释 ...

  9. c语言随机数猜字,玩猜字游戏顺便理解c语言的伪随机数(rand,srand)

    随机数 要想要产生真正的随机数,需要先来了解下面几个函数. rand()函数 C 库函数 int rand(void) 返回一个范围在 0 到 RAND_MAX 之间的伪随机数. RAND_MAX 是 ...

最新文章

  1. html实现动态多表单输入,提交多个动态添加的html表单
  2. docker配置dns解决办法
  3. 解决spring配置c3p0连接池,tomcat无法正常启动
  4. java chsftp.get 追加_Java SFTP上传使用JSch,但如何覆盖当前文件?
  5. Python reload 函数 - Python零基础入门教程
  6. 我们可以拥有多少级指针?
  7. 比较Apache Hadoop 生态系统中不同的文件格式和存储引擎的性能
  8. Debian Gnu/Linux8.5安装GOLANG环境笔记
  9. nexus安装过程中遇到的一些问题
  10. C# winform实现系统托盘NotifyIcon控件右键菜单
  11. 赢在互联网的起跑线上
  12. Code For Better 谷歌开发者之声——使用谷歌浏览器 Chrome 更好地调试
  13. AndroidStudio打包AAR供Unity使用流程
  14. 【python教程】揭秘京东|淘宝秒杀抢购背后的黑幕,为什么你总抢不到商品?
  15. 坎坎坷坷,跌跌撞撞,我的2019年度总结
  16. JavaWeb项目实战 第四部分 Linux
  17. UDS诊断系列介绍13-31服务
  18. BIOS设置与硬盘分区
  19. E-PUCK机器人-标准固件
  20. 激荡25年的中国互联网发展史(上篇):“互联网” 的群星闪耀时

热门文章

  1. windows CE 4.2、5.0、6.0下载地址
  2. WS-Trust和WS-SecureConversation
  3. csgo中国上海服务器因维护,2019CSGO亚洲邀请赛11月20日战火重燃 再临上海
  4. 产品设计中的五个层次需求,你知道吗?
  5. FBW7通过端粒脱帽介导肺纤维化和衰老
  6. Apache和Spring提供的StopWatch执行时间监视器
  7. [jzoj 1285] 奶酪厂 {贪心}
  8. Go语言debug调试
  9. 搭建Windows下Android应用开发环境——Eclipse/Android/ADT
  10. vue 之url拼接 根据选择条件动态修改url地址