获取随机数函数sand()的总结
获取随机数函数sand()的用法详见官方文献:http://www.cplusplus.com/reference/cstdlib/rand/?kw=rand
1、函数 int sand(void);的返回值为0——RAND_MAX(官方文献里此值为32767)之间的随机数。
2、介绍sand()函数不可避免要介绍void srand(unsigned int seed);函数,此函数的作用有两个:一、缩小sand()函数的返回值区间大小,执行过srand(unsigned int seed)函数后,sand函数的返回值为[seed,32767)之间的随机数;二、可以理解为密钥值,让每次的sand()执行结果都不同,此时要求seed值必须是变值(密钥值变化结果才能变化嘛)。sand()函数执行之间不执行srand函数与执行srand(1)的结果是相同的。
3、sand()的一些技巧:
(1)若再想缩小返回值的区间大小就要利用一些方法了,比如若想获取[0,34)之间的随机数,我们可以用求余方法处理:sand() % 34。推广公式就是: rand() %(m-n) + n,返回区间为[n,m)。
(2)前边我们提到过如何让每次的执行结果都不同,我们须把seed的值变化,我们首先想到的肯定是以当前的时间为seed值。
下面是写的一个小例子及运行结果:
例子1:不调用srand(unsigned int seed);时:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>int main()
{
int i;
int result=0;printf("The result is:\n");
//srand(time(NULL));
//srand(1);for(i=0;i<6;i++){result = rand()%33 + 1;printf("%02d\t",result);}
result = rand()%16 + 1;
printf("%02d\n",result);
printf("over!\n");
return 0;
}
编译及执行结果:
$ gcc -o test_rand my_rand.c
$ test_rand
The result is:
09 17 16 26 32 18 03
over!
$ test_rand
The result is:
09 17 16 26 32 18 03
over!
例子2:调用srand(1)时:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>int main()
{
int i;
int result=0;printf("The result is:\n");
//srand(time(NULL));
srand(1);for(i=0;i<6;i++){result = rand()%33 + 1;printf("%02d\t",result);}
result = rand()%16 + 1;
printf("%02d\n",result);
printf("over!\n");
return 0;
}
编译及执行结果:
$ gcc -o test_rand my_rand.c
$ test_rand
The result is:
09 17 16 26 32 18 03
over!
$ test_rand
The result is:
09 17 16 26 32 18 03
over!
例子3:调用srand(seed),并且seed值一直变化的情况:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>int main()
{
int i;
int result=0;printf("The result is:\n");
srand(time(NULL));
//srand(1);for(i=0;i<6;i++){result = rand()%33 + 1;printf("%02d\t",result);}
result = rand()%16 + 1;
printf("%02d\n",result);
printf("over!\n");
return 0;
}
编译及运行结果:
$ my_rand
The result is:
17 31 14 22 29 12 10
over!
$ my_rand
The result is:
19 24 22 29 25 21 16
over!
(不知道大家注意到rand函数返回值的区间的细节没呢? )
获取随机数函数sand()的总结相关推荐
- C语言中strand() rand() time()函数的简单介绍及获取随机数的方法
rand()函数简介 功 能 :伪随机数发生器 所属库:stdlib.h 用 法 :需要先调用srand初始化,一般用当前日历时间初始化随机数种子,这样每行代码都可以产生不同的随机数. 函数原型:in ...
- js获取随机数与随机颜色函数的简单封装
获取随机数: /*** 获取一个范围内的随机整数* @param {number} a 表示范围的数字* @param {number} b 表示范围的数字*/ function getRandom( ...
- php生成指定范围随机数两位小数_python学习之随机数函数
前言 分享一下我所整合的python中的随机数函数,就当作是自己的一个笔记,也可以供像我一样的喜欢python的伙伴参考学习,希望你们也可以记录下自己的学习过程. 一.random() 生成一个(0, ...
- linux 内核 获取随机数
linux内核的熵池 Linux内核采用熵来描述数据的随机性.熵(entropy)是描述系统混乱无序程度的物理量,一个系统的熵越大则说明该系统的有序性越差,即不确定性越大.在信息学中,熵被用来表征一个 ...
- 【TypeScript】获取随机数,并随机生成年份,判断是否为闰年
获取随机数 Math.random():结果为 0-1 间的一个随机数(包括0, 不包括1) : //返回5-15之间的随机数 Math.random() * 10 + 5; Math.ceil(n) ...
- java如何实取随机数_java - 如何在Kotlin中获取随机数?
java - 如何在Kotlin中获取随机数? 可以在2个参数之间返回随机整数的通用方法,如ruby,可以使用rand(0..n). 有什么建议吗? 16个解决方案 208 votes 我的建议是In ...
- Flutter获取随机数 Dart语言核心基础
也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好. 学习Dart语言,首先我们需要使用到一个语言调试工具 DartPad 在 Dart 中,dart:math 类库提供了 数学常数和函数 ...
- RANDOM模块:PYTHON获取随机数
RANDOM模块:PYTHON获取随机数 1. random.random random.random(): 用于生成一个0到1的随机浮点数: 0 <= n < 1.0 例子: >& ...
- [转载] Python中的数学函数,三角函数,随机数函数
参考链接: Python中的数学math函数 3(三角函数和角函数) 数学函数 函数返回值 ( 描述 )abs(x)返回数字的绝对值,如abs(-10) 返回 10ceil(x)返回数字的上入整数,如 ...
最新文章
- T-SQL WITH 分号问题
- c++ eos智能合约开发_十分钟教你开发EOS智能合约
- 三维激光重建原理与实现HALCON
- doctype的三种类型
- [codeigniter]CI中使用pChart绘制图表,已测通过
- 实录 | 平安人寿资深算法工程师姚晓远:对话生成模型的探析与创新
- Android NDK学习笔记2:数组
- python算闰年和平年的天数_Python自定义函数计算给定日期是该年第几天的方法示例...
- uwsgi+python+flask+nginx服务器部署
- python列表元组字符串都属于有序数列_列表、元组、字符串是Python的__________(有序、无序?)序列。...
- The Model Driven Software Network
- 用JAVA制作小游戏——推箱子(一)
- jdk版本问题:hour_day_of 0 -1
- 三星平板显示无法连接网络连接服务器,三星p600平板电脑无法连接无线网络该怎么办?...
- 极光推送上线7周年大庆,777件礼物送给大家
- s3c2440移植Linux内核,移植Linux-3.4.2内核到S3C2440
- MSSQL 数据页查询使他 DBCC PAGE 详细说明
- 网狐网络获取失败是否重试
- WIN7旗舰版下安装SQL SERVER 2008安装报错解决方案
- ggplot2 | 世界杯赛程的可视化就交给我吧!~