关于C语言中随机函数的使用详解
C语言中大家都知道的随机函数为random,但是random函数并不是ANSI C标准,所以random函数不能在gcc或者vc等编译器下编译通过。
c语言中,rand()函数可以产生随机数,但其产生的随机数是固定的。
#include <stdio.h>
#include <stdlib.h>int main()
{int x;for (x = 0; x < 5; x++){printf("%d\n", rand()); }return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
多次运行以上程序产生的结果并未发生变化。
至于rand()函数产生随机数的范围为0~RAND_MAX,在Linux平台RAND_MAX定义在stdlib.h, 其值为2147483647。
那么如何产生真正意义上的随机数呢,
这就需要调用srand()函数,
通过srand((unsigned)time(NULL))来实现
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main()
{int x;srand((unsigned)time(NULL));for (x = 0; x < 5; x++){printf("%d\n", rand()); }return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
可见每一次运行产生的随机数都不相同。
如何产生设定范围内的随机数
由于rand产生的随机数从0到rand_ max,而rand_ max是一个很大的数,那么如何产生一个设定范围内,例如从X ~ Y的数呢?
从X到Y,有Y-X+1个数,因此要产生从X到Y的数,需要这样编写
number = rand() % (Y - X + 1) + X;
例如:产生1~100的随机数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main()
{int x;srand((unsigned)time(NULL));for (x = 0; x < 5; x++){printf("%d\n", rand() % (100 - 1 + 1) + 1); }return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
以上就是我对随机函数的理解,希望对有需要的人能有所帮助。
关于C语言中随机函数的使用详解相关推荐
- java的匿名函数_JAVA语言中的匿名函数详解
本文主要向大家介绍了JAVA语言中的匿名函数详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.使用匿名内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: ...
- C语言 中的 数据类型 超详解
C语言 中的 数据类型 超详解 一.整型(int.short.long.long long) 1.有符号整型 有符号整型的数据类型通常包括 int.short.long.long long 四种,因为 ...
- (char*)x C语言中的和*的详解
C语言中的指针是个让人看着,想着就头疼的问题;学习指针之前要先要懂得几个概念,在此先根据自己实际工作中遇到的几个例子说明一下.配上程序和编译结果. &和*在C语言中的含义:&取地址,* ...
- C语言中数组的使用详解
文章来源: 学习通http://www.bdgxy.com/ 目录 1 数组的基本概念 2 数组定义语法 3 一维数组的初始化 3.1 全部初始化 3.2 部分元素赋初值 3.3 省略长度赋初值 4 ...
- C语言怎么判断字符YN,c语言中的宏_详解(转)
1. 简单宏定义 简单的宏定义有如下格式: [#define指令(简单的宏)] #define 标识符替换列表 替换列表是一系列的C语言记号,包括标识符.关键字.数.字符常量.字符串字面量.运算符和标 ...
- c语言中的字符串数组,详解C语言中的字符串数组
在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include #incl ...
- c语言中截取字符串 sub,详解C++ string常用截取字符串方法
string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos) ...
- 关于C语言中的重点转义字符详解
一.了解有哪些常见的转义字符 首先,我们知道在C语言中有许多转义字符,接下来我将一些常见的转义字符罗列下来:\? , \' , \'' , \\ , \a , \n , \t , \ddd , \xd ...
- C语言中声明和定义详解
变量声明和变量定义 变量定义:用于为变量分配存储空间,还可为变量指定初始值.程序中,变量有且仅有一个定义. 变量声明:用于向程序表明变量的类型和名字. 定义也是声明,extern声明不是定义 定义也是 ...
最新文章
- 部署Awstats日志分析系统
- STM32:Flash擦除与读写操作(HAL库)
- 通过NetMassDownloader批量下载和使用微软.NET框架源代码
- 分布式服务常见问题—分布式事务
- Ansible基本命令
- 数据结构----快速排序
- horizon client 无法识别域_iText for Mac(OCR识别图中文字工具)
- 廖雪峰--python教程:笔记四-函数式编程
- 苹果华人工程师被捕后续,按“商业间谍”指控,本人不认罪
- 二进制数据(Image类型)从一个表存入另一个表
- 数据结构与算法JavaScript描述——队列
- educoder 数据挖掘算法原理与实践:决策树
- 反向题在测试问卷信效度_[问卷的信度和效度分析]问卷信度和效度分析
- java版我的世界快速建造_1分钟教你建造《我的世界》最精致的窑洞!从此告别穴居人生活?...
- 计算机编程导论python程序设计答案-计算机科学与Python编程导论_学堂云答案
- codeforces1132E Knapsack
- DirectShow编程
- 「AppleScript」循环遍历
- 使用超临界二氧化碳进行精密表面清洁
- Gox语言中的数组类型及其常用操作 - GX7.1