获取随机数函数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()的总结相关推荐

  1. C语言中strand() rand() time()函数的简单介绍及获取随机数的方法

    rand()函数简介 功 能 :伪随机数发生器 所属库:stdlib.h 用 法 :需要先调用srand初始化,一般用当前日历时间初始化随机数种子,这样每行代码都可以产生不同的随机数. 函数原型:in ...

  2. js获取随机数与随机颜色函数的简单封装

    获取随机数: /*** 获取一个范围内的随机整数* @param {number} a 表示范围的数字* @param {number} b 表示范围的数字*/ function getRandom( ...

  3. php生成指定范围随机数两位小数_python学习之随机数函数

    前言 分享一下我所整合的python中的随机数函数,就当作是自己的一个笔记,也可以供像我一样的喜欢python的伙伴参考学习,希望你们也可以记录下自己的学习过程. 一.random() 生成一个(0, ...

  4. linux 内核 获取随机数

    linux内核的熵池 Linux内核采用熵来描述数据的随机性.熵(entropy)是描述系统混乱无序程度的物理量,一个系统的熵越大则说明该系统的有序性越差,即不确定性越大.在信息学中,熵被用来表征一个 ...

  5. 【TypeScript】获取随机数,并随机生成年份,判断是否为闰年

    获取随机数 Math.random():结果为 0-1 间的一个随机数(包括0, 不包括1) : //返回5-15之间的随机数 Math.random() * 10 + 5; Math.ceil(n) ...

  6. java如何实取随机数_java - 如何在Kotlin中获取随机数?

    java - 如何在Kotlin中获取随机数? 可以在2个参数之间返回随机整数的通用方法,如ruby,可以使用rand(0..n). 有什么建议吗? 16个解决方案 208 votes 我的建议是In ...

  7. Flutter获取随机数 Dart语言核心基础

    也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好. 学习Dart语言,首先我们需要使用到一个语言调试工具 DartPad 在 Dart 中,dart:math 类库提供了 数学常数和函数 ...

  8. RANDOM模块:PYTHON获取随机数

    RANDOM模块:PYTHON获取随机数 1. random.random random.random(): 用于生成一个0到1的随机浮点数: 0 <= n < 1.0 例子: >& ...

  9. [转载] Python中的数学函数,三角函数,随机数函数

    参考链接: Python中的数学math函数 3(三角函数和角函数) 数学函数 函数返回值 ( 描述 )abs(x)返回数字的绝对值,如abs(-10) 返回 10ceil(x)返回数字的上入整数,如 ...

最新文章

  1. T-SQL WITH 分号问题
  2. c++ eos智能合约开发_十分钟教你开发EOS智能合约
  3. 三维激光重建原理与实现HALCON
  4. doctype的三种类型
  5. [codeigniter]CI中使用pChart绘制图表,已测通过
  6. 实录 | 平安人寿资深算法工程师姚晓远:对话生成模型的探析与创新
  7. Android NDK学习笔记2:数组
  8. python算闰年和平年的天数_Python自定义函数计算给定日期是该年第几天的方法示例...
  9. uwsgi+python+flask+nginx服务器部署
  10. python列表元组字符串都属于有序数列_列表、元组、字符串是Python的__________(有序、无序?)序列。...
  11. The Model Driven Software Network
  12. 用JAVA制作小游戏——推箱子(一)
  13. jdk版本问题:hour_day_of 0 -1
  14. 三星平板显示无法连接网络连接服务器,三星p600平板电脑无法连接无线网络该怎么办?...
  15. 极光推送上线7周年大庆,777件礼物送给大家
  16. s3c2440移植Linux内核,移植Linux-3.4.2内核到S3C2440
  17. MSSQL 数据页查询使他 DBCC PAGE 详细说明
  18. 网狐网络获取失败是否重试
  19. WIN7旗舰版下安装SQL SERVER 2008安装报错解决方案
  20. ggplot2 | 世界杯赛程的可视化就交给我吧!~

热门文章

  1. Java常用的Linux命令
  2. 如何成为一名数仓工程师?
  3. c语言编程六度空间,六度空间理论的图论法证明及应用
  4. 半导体或芯片的90nm、65nm 、0.25um、0.18um、工艺指的是什么?
  5. u8、u16、u32、s8、s16、s32、Size_t是什么类型
  6. 信息系统开发中用户需求调研分析方法例解
  7. FMC子卡:4 路 SFP+万兆光纤网络 FMC 子卡
  8. numpy_zero函数
  9. TCP 协议如何保证可靠传输
  10. Java微信手气红包实现