srand是初始化种子。你这个问题我们不得不谈到rand函数的实现。

我们来看看概念性的代码static unsigned long next = 1;/* 如果你不 srand,那种子就默认为1 */

int rand(void) {

next = next * 1103515245 + 12345;

return((unsigned)(next/65536) % 32768);

}

void srand(unsigned seed) {

next = seed;

}

真正的这俩函数的实现比这个复杂多了,但是原理是一样的。

其实rand函数就是种子经过一系列计算后取余,更新种子,并返回取余后的这个值。

那么,更新种子和初始化种子有何不同呢?

初始化种子是给种子一个固定值。

我们可以清楚的知道,rand每次运行后是自己更新种子的,经过一系列数学原理的运算取余等,导致了每次的返回值不相同,造成了随机数的现象。

但是如果这样会怎么样?srand(2);

a = rand();

srand(2);

b = rand();

a和b会相等!

原因在于生成a后种子值本来被rand更新了,但又被srand(2)设置为了2!

因为仅仅是数学运算,当种子相同,即都为2时,返回值是相同的。所以两次生成的随机数才相同。

明白了这个,我们返回来看看你这个问题。

其实你也是同理的,你在函数里这么写int creatnum()

{

srand(time(NULL));

return rand()%10+1;

}

调用的时候a = creatnum();

b = creatnum();

实际上就是srand(time(NULL));

a = rand()%10+1;

srand(time(NULL));

b = rand()%10+1;

可以看出,虽然是时间作种子,但是由于计算机运行速度太快了,在一秒之内就执行完了你这四句代码,所以time(NULL)产生的秒数是相同的!

这就发生了上面那个问题。

但是如果你函数不写srand(time(NULL));而写在主函数里,看起来就像是srand(time(NULL));

a = rand()%10+1;

b = rand()%10+1;

生成a后种子值被rand更新了。当然就和b不一样了。

不懂再问。

c语言 srand was not,c语言srand生成随机数的问题相关推荐

  1. java随机数语句_Java语言程序设计(七)Math类生成随机数及if语句

    Java有几种类型的选择语句,单向if语句,双向if语句,嵌套if语句,switch语句和条件表达式. 1.单向if语句 if(radius>=0){ area = radius*radius* ...

  2. 【C语言】C语言随机数生成教程,C语言rand和srand用法详解

    在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌. 在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随 ...

  3. C语言:生成随机数(并非固定的随机数)——rand()、srand()

    C语言:生成随机数 1.rand() 函数 2.srand() 函数 3.生成一定范围内的随机数 在实际编程中,我们经常需要生成随机数. 1.rand() 函数 在C语言中,我们一般使用 <st ...

  4. 第十章 结构体_C语言随机数生成教程,C语言rand和srand用法详解

    在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌. 在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随 ...

  5. C语言随机数生成教程,C语言rand和srand用法详解

    在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌. 在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随 ...

  6. C语言详解生成随机数的过程,time函数、时间戳timer、rand函数和srand函数,附猜数字小游戏

    第十一篇:随机数详解 一.准备工作(预备知识) 1.1.生成伪随机数(函数rand) 1.2.伪随机数"变成"随机数(函数time) 1.3.生成确定范围随机数 二.练手随机数经典 ...

  7. c语言连续生成不同随机数_C语言随机数生成教程,C语言rand和srand用法详解

    在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌. 在C语言中,我们一般使用 头文件中的 rand() 函数来生成随机数,它的用法为: int ran ...

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

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

  9. 北京邮电大学c语言按要求输出_C语言经典100例004-统计各个年龄阶段的人数

    系列文章<C语言经典100例>持续创作中,欢迎大家的关注和支持. 喜欢的同学记得点赞.转发.收藏哦- 后续C语言经典100例将会以pdf和代码的形式发放到公众号 欢迎关注:计算广告生态 即 ...

  10. c语言线性顺序表,C语言程序——线性顺序表.doc

    C语言程序--线性顺序表.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文 ...

最新文章

  1. 专业软件测试,各类专业软件测试情况
  2. LIB和DLL的区别与使用,非常详细
  3. HTML5学习笔记(二十七):Ajax
  4. 【SSH进阶】java.lang.IllegalArgumentException: id to load is required for loading
  5. java如何获取全部省市_纯java获取省市区
  6. CorelDRAW2022最新电脑版离线安装教程
  7. IDM与其他下载器加速器优缺点介绍
  8. VUE定时器任务(每天定时12点执行)
  9. matlab矩阵转入tecplot,[转载]tecplot编辑自己想要的变量
  10. Ubuntu 查看文件以及磁盘空间大小管理
  11. win11 删除自带的微软输入法
  12. 计算机boot快捷键,求各种电脑进入boot 的方式,一般的电脑快捷键是什么?
  13. svn update冲突解决
  14. 云呐:资产密集型企业固定资产管理系统的基本功能特点
  15. 鸿蒙二部曲之一,网文封神之作,“鸿蒙二部曲”和“斗罗四部曲”你选择站哪边?...
  16. 如何在opengl用代码绘制英文_如何用Python画一只肥肥的柯基狗狗——turtle库绘制椭圆与弧线实践...
  17. Android初学------系统设置之设置输入法
  18. 合同诈骗与普通诈骗有什么区别
  19. 商业研究(18):以小见大,看互联网经济(4个股权众筹平台,10个项目)
  20. 学习OMO游戏管理驾驶舱的设计

热门文章

  1. C语言基础级——N维数组定义与使用
  2. kubernetes in action读书笔记(四)ConfigMap、Secret、滚动升级、downwardAPI、Deployment、Statefulset
  3. c语言求自然数1 10之和,C程序计算自然数之和
  4. 文件夹访问被拒绝,您需要权限来执行操作
  5. 2021Q2产品团队绩效总结--管理日记
  6. DNS 动态域名解析
  7. 忘记背后 努力面前 向着标杆直跑!(转)
  8. 知来者之可追_#AboutLastWeek:老朋友,新来者以及介于两者之间的人
  9. Python烤地瓜案例
  10. 笔记:torch的基本运算