C语言中连续调用rand函数,返回值不变

最近用C语言随机函数编程发现了一个奇怪的现象:
简易版代码:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>int test1()
{srand((unsigned)time(NULL));int n;n=rand()%100;return n;
}int main()
{int i;for(i=0;i<10;i++){printf("%d ",test1());}printf("\n");
}

代码通俗易懂不做解释,代码效果展示如下:
奇怪的事情发生了,rand函数10次调用的返回值竟然是一样的。
修改代码:
然而这次,代码效果貌似正常了一些:
上网搜索原因,说是因为time(NULL)是返回当前秒数,由于程序调用时间很短,time(NULL)值没有变,所以rand()使用的种子是不变的,因此每次初次调用返回值是不变的。经过检验,这种说法合理
展示代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>int test1()
{srand((unsigned)time(NULL));printf("%d ",time(NULL)); //插入这一句int n;n=rand()%100;return n;
}int main()
{int i;for(i=0;i<10;i++){printf("%d \n",test1());}printf("\n");
}

代码效果展示:

原来是time(NULL)在搞鬼,所以为了程序运行的安全性和可靠性,srand()函数还是在main函数中调用比较保险。

C语言中连续调用rand函数,返回值不变相关推荐

  1. C语言中未显示声明函数返回值的类型

    C语言中如果未显示声明函数返回值的类型或函数的形式参数类型,它就默认返回整型.这种声明在C语言中叫做隐式声明.例如: / //main.c /#include<stdio.h>divide ...

  2. C语言中函数的调用和函数返回值(17)

    C语言中函数的调用和函数返回值 一.函数的调用形式 按照函数调用出现的形式,可以分为三种调用方式: 1.函数调用语句 例如: printf_star(); 2.函数表达式 c=2*max(a,b); ...

  3. C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例

    C语言:一个涉及指针函数返回值与printf乱码.内存堆栈的经典案例 一个奇怪的C语言问题,涉及到指针.数组.堆栈.以及printf.以下实现: 整数向字符串的转换,返回字符串指针,并在main函数中 ...

  4. c语言随机字符rand,C语言中生产随机数 rand()函数

    一:如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间.RAND_MAX定义在stdlib.h, 其值为214748 ...

  5. c语言如何调用void函数返回值,C void函数,返回值

    没有表达式的return语句: void func(void) { return; } 在void函数中是完全合法的.带表达式的return语句的合法性取决于您正在使用的C语言的版本. 1990 C标 ...

  6. C语言灵魂篇|指针作为函数返回值

    C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include #includechar *s ...

  7. c语言指针,return以及函数返回值

    指针作为c语言的精华所在所以会多学习几天来扎实的掌握 void* 这不叫空指针,这叫无确切类型指针.这个指针指向一块内存,却没有告诉程序该用何种方式来解释这片内存.所以这种类型的指针不能直接进行取内容 ...

  8. python 函数变量_Python函数中的变量和函数返回值

    1.函数的变量 局部变量和全局变量: Python中的任何变量都有特定的作用域 在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量 在一个文件顶部定义的变 ...

  9. Python函数中的变量和函数返回值

    1.函数的变量 局部变量和全局变量: Python中的任何变量都有特定的作用域 在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量 在一个文件顶部定义的变 ...

最新文章

  1. C功底挑战Java菜鸟入门概念干货(一)
  2. Oracle资源管理器(二)-- 创建和使用数据库资源计划
  3. JavaScript内置对象Date常用函数
  4. 语言五子棋无ai程序框图_微软多语言预训练模型T-ULRv2登顶XTREME排行榜
  5. javascript中Promise深入理解(一)
  6. 复杂网络中聚类算法总结
  7. 正态性检验方法——K-S检验和S-W检验
  8. Tegra X2 系统上安装 openpose
  9. 涨姿势 之 Sourcetree 显示头像
  10. pppd详解_pppd命令使用详解
  11. 人机对话_javaweb_ 一对一聊天系统
  12. java数独最快解_java快速解数独
  13. 2--STM32+USB移植+HID 与AUDIO类MIDI设备组成的复合设备
  14. FT232驱动安装不成功的解决方案
  15. 二叉树叶子结点,非叶子节点以及深度的计算
  16. 区块链时代的世界宪章:代码即法律
  17. Pycharm 图像分辨率调整 学习笔记
  18. 领航机器人广告段子_关于领航
  19. 度小满金融2019年春招笔试题(研发岗)
  20. 使用np.full制作RGB三色图遇到的问题,改变通道值,图像总是黑色

热门文章

  1. Android 判断网络状态
  2. android 快速点击开启某功能(不如快速点击打开开发者模式)
  3. 阿里巴巴Web前端面试的一道JS题目,求解答!!!
  4. oracle11g分区表按时间自动创建
  5. 2021年高考模拟考成绩查询,2021年湖北省普通高考模拟考试成绩查询
  6. android11有哪种手机,支持安卓11系统的机型有哪些
  7. Go 学习笔记(5)— 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、取地址和指针运算符
  8. MySQL 学习笔记(6)— 存储过程创建、调用、删除以及带参数的存储过程
  9. [原创]KVM虚拟化管理平台的实现
  10. L1-009. N个数求和