一.rand()函数简介

我们先来看一下cplusplus.com - The C++ Resources Network网站上rand函数的基本信息:

系统生成随机数时需要使用rand函数(rand()会返回一个范围在0到RAND_MAX(32767)之间的伪随机数(整数)。由此可知,可以将rand函数理解为一个非常长的伪随机数组,而我们可以通过给rand函数传参来达到从不同的入口进入数组的效果。

因为随机数的属性,所以rand函数在一些简易的游戏程序中非常常见,如三子棋,扫雷等游戏都可以利用这个函数进行一些随机生成的玩法。

二.与time函数结合生成随机数

在调用rand()函数之前,可以使用srand()函数设置随机数种子,如果没有设置随机数种子,rand()函数在调用时,自动设计随机数种子为1。随机种子相同,每次产生的随机数也会相同

srand种子可使用传入时间戳的方式来确定入口。如:

srand((unsigned int)time(NULL));

调用srand函数且传入当前时间戳是为了避免每次运行程序产生随机数的入口都相同的情况,用以确定本轮程序随机数生成的入口。
      注:一次程序运行只需要使用srand函数确定一次入口就行,如果每次随机数的生成都依赖srand则可能会因为生成时间相近而导致生成的随机数相近甚至相同。

三.与取模结合生成指定范围随机数

有时我们需要生成的随机数的范围需要是0-99,又或是100-200。而不是0-32767,这时就需要利用rand函数然后取模或加减相应的数就可以达到我们的要求了。

如:要生成0-99的随机数

num1=rand()%100;

生成100-200的随机数

num2=rand()%101+100

生成1800-1950的随机数

num3=rand()%151+1800

可得公式:生成n-m的随机数——>rand()%(m-n+1)+n

【C语言】rand()函数(如何生成指定范围随机数)相关推荐

  1. C语言 rand函数,srand函数 生成随机数用法详解

    与随机数有关的两个函数,srand() 和 rand(),这两个函数都包含"stdlib.h"头文件里 srand()函数是随机数发生器,使得每轮产生的随机数列都不相同.      ...

  2. C语言 rand函数(随机)

    rand函数不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子.如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand().而使用同种子相 ...

  3. C语言(rand函数)

    C语言(rand函数) (2006-09-24 20:41:59) 转载     srand()就是给rand()提供种子seed 1,先看一个例子 #include <iostream> ...

  4. c语言rand函数_C语言随机函数学不明白?一知识一案例,全面解析C语言随机函数

    前言 本文主要讲解C语言的随机函数,学习随机函数将由此拉开序幕,亲爱的准备好了没? 随机数 随机数主要是通过rand()函数产生的,rand() 函数可以随机产生一个正整数,它会产生一个无符号整数,范 ...

  5. C语言rand()函数产生随机数详解

    C语言rand函数产生随机数详解 1.rand函数的原型,功能和界限 2.用rand函数获取随机数 3.随机数生成原理 1.rand函数的原型,功能和界限 rand函数的原型: #include &l ...

  6. c语言rand函数的作用,详解C语言中rand函数的使用

    前言 我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的ran ...

  7. C语言fgets()函数(以指定长度读取文件中的字符,并存入字符数组变量中)

    C语言fgets()函数(以指定长度读取文件中的字符,并存入字符数组变量中) 需要引入C 标准库 - <stdio.h> 文章目录 描述 声明 参数 返回值 实例 测试(确实只能读n-1个 ...

  8. rand生成随机数的范围_JS中生成指定范围随机数

    在日常工作中,我们经常会需要生成一些随机数,相信大家最熟悉的就是 Math.random() 这个api,本文将介绍生成指定范围随机数的方法. 首先我们复习一下这几个api,后面会用到: 1.Math ...

  9. random and password 在Linux下生成crypt加密密码的方法,shell 生成指定范围随机数与随机字符串...

    openssl rand -hex n (n is number of characters) LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head ...

最新文章

  1. springmvc配置DispatcherServlet拦截url注意事项
  2. MIT Molecular Biology 笔记5 转录机制
  3. 1.11 为什么使用卷积-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  4. Hystrix和ribbon的超时时长准确配置的理论依据
  5. linux进程配置异常中断自动重启_Linux系统配置及服务管理 (四)进程管理
  6. Silverlight实用窍门系列:56.Silverlight中的Binding使用(一)【附带实例源码】
  7. mysql语句数据库_数据库的Mysql语句
  8. 学习 Java 在哪里找题练习?
  9. 主题:大胆预测下JS框架的走势(ZT)
  10. 互联网时代: 从Uber的供需匹配看开发需求
  11. 下载mysql的驱动包
  12. 安卓gridview控件的使用
  13. Cherno C++系列笔记20——P60~P61 为什么不使用using namespace std、命名空间
  14. 怎么理解“付费搜索广告应当与自然搜索结果明显区分”
  15. 苹果6系统怎么更新不了_苹果手机系统怎么降级
  16. springside4配置环境时无法下载到两个核心包
  17. CSDN技能树测评:开宗立派但仍需精雕细琢
  18. 三分钟读懂双十二布局玩法,大促流量销量双翻倍so easy!
  19. 软件开发工期估算系列(3)——見積もり値の「幼虫」「サナギ」「成虫」
  20. GORM 基础 -- Associations

热门文章

  1. 怎么修改坚果云文件同步路径?
  2. LeetCode 322. 零钱兑换 完全背包
  3. BZOJ3323 文艺平衡树 (splay 绿色无毒模板)
  4. 利用分而治之求最大子列和
  5. linux问题排查工具,几个常见的Linux系统故障及其排查的方法
  6. 红米K40 Pro的root步骤 之二(MIUI 13.0.6 稳定版 安卓12)
  7. Google优化公司采访的最新Google优化资讯报道
  8. 幕布,Ulysses,Effie:三款教师必备辅助笔记软件
  9. [JS逆向案例]诸葛找房Cookie之acw_sc__v2分析
  10. 事业单位计算机类专技岗职称,事业单位,专技岗晋升容易吗?