文章目录

一、随机数函数

1.rand()、srand()

2.time()

二、案例实现

1.案例描述

2.代码实现


一、随机数函数

1.rand()、srand()

C语言产生随机数要用到的函数是rand()和srand()。random()函数不遵循ANSIC标准,在gcc、vs等编译器下不能通过编译。

(1)若是为了生成一个无范围限制的随机数,只需要使用rand()即可。

rand()返回一个随机数,范围为0~RAND_MAX。RAND_MAX定义在stdlib.h中,其值为2147483647。

(2)如果要生成某个范围内的随机数,有两种情况:

①从0开始的随机数,例如:生成0~10的随机数,利用rand()函数对10求余,即rand()%10;

②不从0开始的随机数,例如:生成5~25的随机数,利用rand()函数对25-5=20求余再加上5,即rand()%20+5.

(3)以上两种情况生成的随机数都是一次性的,以后无论再运行几次,输出的结果都将与第一次相同。为了使程序在每次执行时都能生成一个新序列的随机值,需要为随机数生成器提供一个新的随机种子。此时需要使用srand()函数,该函数为随机数生成器播撒种子。只要种子不同,rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器。

函数原型:void srand(unsigned int seed);

该函数的参数seed是种子,用来初始化rand()的起始值。

功能为:从srand(seed)中所指定的seed开始,返回一个在[0,RAND_MAX]之间的随机整数。rand()函数是真正的随机数生成器,srand()为rand()提供随机数种子。srand((unsigned int)time(NULL)) 表示使用系统定时器的值作为随机数种子。

系统在调用rand()函数之前会自动调用srand()函数,如果用户在调用rand()函数之前没有调用srand()函数,那么系统就会默认将1作为伪随机数的初始值。如果用户调用过srand(),并给参数seed赋一个值,那么rand()函数就会将此值作为产生随机数的初始值。如果给seed一个固定值,那么rand()函数产生的随机数将会是一样的。

2.time()

通常使用系统时间来进行初始化,即使用time()函数获取系统时间,它的返回值为time_t类型,要转换为unsigned int 类型之后再传给srand()函数。使用time()函数还需要调用“time.h”头文件。

使用time()函数,其参数一般为NULL,即直接传入空指针即可。如果觉得时间间隔太小,可以乘上合适的整数,例如:srand((unsigned int)time(NULL)*5)。


二、案例实现

1.案例描述

一盘游戏,两个人轮流掷骰子5次,并将每次掷骰子的点数累加,5局后,累计点数较大的一方获胜,否则为平局。

2.代码实现

#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main() {srand((unsigned int)time(NULL));//使用系统计时器的值作为随机种子int res1 = 0, res2 = 0;for (int i = 1; i <= 5; i++) {res1 += rand() % 6 + 1;//生成1~6的随机数,并进行累加  res2 += rand() % 6 + 1;//生成1~6的随机数,并进行累加       }printf("甲方点数:%-5d 乙方点数:%5d\n", res1, res2);if (res1 > res2) {printf("甲方获胜\n");}else if (res1 < res2) {printf("乙方获胜\n");}else {printf("平局");}
}

【C语言】随机数函数rand和srand相关推荐

  1. C语言随机数:rand()和srand(time(NULL))的使用

    C语言随机数 rand()简介 srand()简介 使用 rand()简介 使用该函数首先应在开头包含头文件<stdlib.h> #include<stdlib.h> //(C ...

  2. 随机数函数rand()和srand()的区别

    引子 相信大家对于rand()函数并不陌生,我们常用它来生成伪随机数,但是为什么有时候我们生成的随机数并不符合预期呢?或者说,为什么有时候我们生成的随机数并不随机?如何有效地生成伪随机数呢? rand ...

  3. c语言里函数rand()和srand()的用法

    c语言里函数rand()和srand()的用法 rand(void)用于产生一个伪随机unsigned int 整数. srand(seed)用于给rand()函数设定种子. srand 和 rand ...

  4. C++产生随机数函数rand()

    C++产生随机数函数rand() C++11之前没有random,生成随机数用rand(),可以配合srand()来使用.rand()不是真正的生成随机数,而是线性取余,有可能也会生成相同的数出来.生 ...

  5. php随机整数rand和mt_rand,PHP随机数函数rand()与mt_rand()的讲解

    PHP随机数函数rand()与mt_rand()的讲解 PHP中rand()与mt_rand()都是用于产生一个指定范围内单独随机数的函数,如果需要产生多个不重复的随机数,请参考:PHP生成指定范围内 ...

  6. mysql 列 随机数_MySQL的指定范围随机数函数rand()的使用技巧

    公式如下: rand() * (y-x) + x 咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数 ...

  7. sqlserⅴer随机函数_SQL server的随机数函数rand()详解

    SQL server的随机数函数rand()详解 from:http://tieba.baidu.com/f?kz=607363268 在SQL Server中,有个随机函数rand(),有不少新手可 ...

  8. c mysql生成随机数函数,MySQL的指定范围随机数函数rand()的使用技巧

    公式如下: rand() * (y-x) + x 咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数 ...

  9. MySQL集函数随机数_MySQL的指定范围随机数函数rand()的使用技巧

    公式如下: rand() * (y-x) + x 咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数 ...

最新文章

  1. 浮层java_通过遮罩层实现浮层DIV登录的js代码
  2. 编程问题之:x=xamp;(x-1)
  3. 您是否应该始终偏爱xrange()而不是range()?
  4. Spark DataFrame 添加自增id
  5. bzoj2034: [2009国家集训队]最大收益
  6. 都说dlib是人脸识别的神器,那到底能不能识破妖怪的伪装?
  7. nodejs 创建一个静态资源服务器 +路由
  8. 《计算复杂性:现代方法》——第0章 记 号 约 定 0.1 对象的字符串表示
  9. Entity Framework 无法加载指定的元数据资源。
  10. 【原创】修复ios输入框获取焦点时不支持fixed的bug
  11. php 处理微信昵称含有特殊符号
  12. 《UnityAPI.Rect矩阵》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Rect+Contains+Overlaps+ToString+立钻哥哥++OK++)
  13. 理科女生计算机与会计学选择,我是一理科女生、在报考学校时候、选择会计还是会计电算化比较好呢?还有会计与审计、会计于统计核算....
  14. 无中介租房搜房工具 V1.0
  15. ecshop清空购物车提醒,ecshop购物车,ecshop清空购物车,ecshop提醒信息,ecshop清空操作提示
  16. 【SQLSERVER 2000】由于数据移动,未能继续以 NOLOCK 方式扫描
  17. Icon和Ico图片的区别
  18. 高校间计算机专业交流研讨会,第七届全国高校计算机网络教学暨网络工程专业建设研讨会...
  19. 如何改typecho主题头像_一个比较免费又漂亮的typecho主题-Akina for Typecho
  20. 考研英语 长难句训练day65

热门文章

  1. 不容错过的Java高级面试题
  2. ANSYS中按照X坐标提取节点应力值
  3. 刚买的新树莓派怎样用(树莓派新手入门)
  4. 祝您健康:抢救脑溢血患者的神奇秘方:针刺十宣穴,涌泉穴
  5. jQuery使用ajaxSubmit()提交表单以及AjaxSubmit的一些用法
  6. MySQL进阶垫脚石:线程长时间处于killed状态怎么破?
  7. 用C语言打印简单图案(爱心\圆形\三角形等)
  8. mysql 循环之continue
  9. shell脚本之遍历字符串数组
  10. Excel使用教程技巧