一、在使用rand()产生随机数时,产生的是0~RAND_MAX(该值与平台有关,至少为32767,我下面测试的平台是0x7fffffff),之间的随机数,但其产生的随机数时伪随机数,默认随机数种子为0,所以每次重新运行程序,都会产生相同的随机数,如果要是每次运行时产生的随机数不同,可以以当前时间time(0)作为随机数种子。

二、srand(seed)函数用于给rand()函数设定种子。

三、time是C语言获取当前系统时间的函数,以秒作单位,代表当前时间自Unix标准时间戳(1970年1月1日0点0分0秒,GMT)经过了多少秒。

四、time(0)产生的时间的单位是秒,所以如果在要在一秒内产生多个随机数,那么就不应该用time(0)作为种子,time(0)一般只用于重新运行时要产生不同随机数的情况,否则在这一秒内产生的随机数将会是一样的。如下:

测试代码:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void main( void )
{int i = RAND_MAX;printf("RAND_MAX=0x%x   time(0)=%d \n", RAND_MAX, (int)time(0));/* 输出 10 个随机数. */for (i = 0; i < 10; i++){srand(time(0));printf( "%6d  ", rand());}printf( "\n");
}

五、如果在此之前没有调用过srand(seed),它会自动调用srand(1)一次,而且你会发现每次重新运行都将输出同样的值。

测试代码:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void main( void )
{int i = RAND_MAX;printf("RAND_MAX=0x%x   time(0)=%d \n", RAND_MAX, (int)time(0));/* 输出 10 个随机数. */for (i = 0; i < 10; i++){printf( "%6d  ", rand());}printf( "\n");
}

六、srand(seed)用于给rand()函数设定种子,因为时间的流逝,种子会有变化,得到的随机值也就不一样了。

测试代码

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void main( void )
{int i = RAND_MAX;printf("RAND_MAX=0x%x   time(0)=%d \n", RAND_MAX, (int)time(0));srand((int)time(NULL));/* 输出 10 个随机数. */for (i = 0; i < 10; i++){printf( "%6d  ", rand());}printf( "\n");
}

七、取得[a,b)之间的随机整数,使用(rand() % (b-a))+ a (结果值将含a不含b)。取得取得[a,b]之间的随机整数,使用(rand() % (b-a+1))+ a (结果值将含a含b).

测试代码

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

八、用rand() / double(RAND_MAX)可以取得0~1之间的浮点数。

测试代码

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

linux c 随机函数 rand srand 介绍相关推荐

  1. rand随机函数和srand初始化种子函数

    先看一份产生真随机函数的代码 #include <stdio.h> #include <stdlib.h> // srand() 和 rand() 函数包含在此头文件中 #in ...

  2. 随机函数rand()算法

    今天学习了一下随机函数rand的算法. 这个算法叫做线性同余算法(linear congruential generator (LCG)). 不同的编译器取的常数不同,可以参考wiki:http:// ...

  3. 用函数计算机玩游戏,2017年计算机等级考试二级C++辅导:随机函数rand()的猜数字游戏...

    突然遇到了随机函数的问题,那出来和大家分享一下 : srand():用此函数来获取随机数的种子,rand()来获取随机数; rand和srand的用法 首先我们要对rand&srand有个总体 ...

  4. c语言设置随机函数,C语言随机函数(c语言随机函数rand怎么用)

    就像是楼上写的 通常随机函数rand() 带有时间种子的随机函数srand(time(0))在用rand()实现.记住加相关头文件 它的返回值就是求取随机的值,所以如果没有对数有要求,直接这样定:pr ...

  5. Linux网络常用工具分类介绍

    Linux网络命令较多,单纯的介绍网络命令的用法也没什么意思.本文将常见的网络命令进行分类,并做出思维导图,对每个分类的命令选择性的介绍其作用.常见选项和用法举例.BTW,不建议记住所有命令,了解一下 ...

  6. Window VNC远程控制LINUX:VNC详细配置介绍

    Window VNC远程控制LINUX:VNC详细配置介绍 //---------------------------------------vnc linux下的详细配置 1.VNC的启动/停止/重 ...

  7. linux cpu uuid 查看,Linux下查看UUID方法介绍

    Linux下查看UUID方法介绍. 1. sudo blkid /dev/sda1: UUID="9ADAAB4DDAAB250B" TYPE="ntfs" / ...

  8. linux下变量名长度,Linux中shell的变量介绍

    Linux中shell的变量介绍 发布时间:2020-06-24 16:20:39 来源:亿速云 阅读:112 作者:元一 这期内容当中的小编将会给大家带来有关Linux中shell的变量介绍,以专业 ...

  9. redhat linux 安装ftp服务,RedHat Linux 9.0为例介绍一下如何安装和配置vsftpd服务器

    本文以RedHat Linux 9.0为例介绍一下如何安装和配置vsftpd服务器. 安装服务器程序 程序下载地址:,目前最新版本为2.0.3,源程序文件名为vsftpd-2.0.3.tar.gz. ...

最新文章

  1. Mac下firefox ssl_error_ssl_disabled
  2. mysql的日期函数以及应用
  3. CMake2:版本号配置与头文件生成
  4. UOJ #576. 积的第K小数
  5. linux essid 异常,Linux无线ESSID:off/any的错误
  6. java导出数据库的结构 表结构 字段信息 主键
  7. OTSU_图像二值化分割阈值的算法
  8. Google Go 初识
  9. android gms包找不到,错误:包com.google.android.gms.appstate不存在
  10. 小米笔记本网卡驱动失效,无法联网
  11. 2021-03-30 libnice 应用 多线程
  12. Delphi XE2控件安装方法
  13. PDE——delta函数
  14. Mac安装软件时各种异常情况的解决方法
  15. 惠勒延迟选择实验(转)
  16. 金地农村土地承包经营权证打证系统
  17. 启动虚拟机报错:.vmss”还原虚拟机状态时出错。 错误导致继续运行操作失败。请保留挂起状态并纠正错误,或放弃挂起状态。
  18. 大数据 - HDFS单机环境搭建(一)
  19. Netty之握手和安全认证
  20. Cisco 产品下载链接汇总 2023 持续更新中

热门文章

  1. 编译linux内核报错‘make menuconfig‘ requires the ncurses libraries
  2. Simplivity存储家族推新:满足所有闪存需求和更好的灾难恢复
  3. KVM虚拟机内无agent情况下的监控方法
  4. cobertura-maven-plugin
  5. Spring源码解析 - AbstractBeanFactory 实现接口与父类分析
  6. 解决DataList控件无缝滚动图片(转)
  7. 查看linux系统的性能
  8. C#/Net代码精简优化技巧(3)
  9. Linux下cacti的安装RedHat9,RedHat AS4
  10. Servlet WEB过滤器