广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中随机数rand()函数详解
  • 364
分享到

C语言中随机数rand()函数详解

2024-04-02 19:04:59 364人浏览 独家记忆
摘要

  在生活中很多场景下都需要产生随机数,比如抽奖,打牌,游戏等场景下就需要使用随机数。在C语言标准库函数里面有专门用来产生随机数的函数rand,它的函数原型如下:

  在生活中很多场景下都需要产生随机数,比如抽奖,打牌,游戏等场景下就需要使用随机数。在C语言标准库函数里面有专门用来产生随机数的函数rand,它的函数原型如下:

  int __cdecl rand(void);

  rand函数没有参数,它的返回值就是随机数。下面通过一个简单的例子来测试一下rand函数。

#include <stdio.h>
#include <stdlib.h>

int main(int arGC, char** argv) {
	
	int i;
		
	i = rand();

	printf("%d",i);
	return 0;
}

  直接调用rand函数产生一个随机数,并打印出来。运行结果如下:

image.png

  此时生成的随机数为41,下面多生产几个随机数看看。

image.png

  通过一个for循环产生10个随机数,通过打印的结果可以看到第一个随机数是41,其他后面9个数据都比较大。将随机次数改为15,在测试一次。

image.png

  此时产生了15个随机数,但是通过和产生10个随机数相比可以发现,这次产生的随机数前面10个数字和上次一模一样。将程序重新运行之后,产生的随机数和上一次也一模一样。

  这时什么原因呢?难道随机数生成函数rand出现了bug?

  实际上通过rand函数产生的随机数是伪随机数,它是根据一个数值然后通过公式计算出来一个值,将计算的结果作为随机数返回。这个固定参考的数值就被称为“种子”,每次计算机启动时就会生成一个种子,然后在以后运行的过程中种子就不会在发生变化了。所以每次执行rnad函数的时候,它参考值种子值都是固定的,因此每次生成的随机数也就是固定的。如果要每次生成的随机数不同,那么每次产生随机数之前就需要改变种子的值。

  种子的值是由srand函数来产生的,函数原型如下:

  void __cdecl srand(unsigned int _Seed);

  函数没有返回值,它的参数就是需要设置的种子值。将修改种子的函数也添加到代码中。

  将种子值设置为10,然后生成10个随机数。

image.png

  将种子值设置为20,然后生成10个随机数。

image.png

  可以看到当种子的值发生变化后,生成的随机数也就发生了变化。如果程序中需要重复的使用随机的话,那么随机种子的值就不能时一个定值,它必须时刻发生变化,这么生成的随机数才能时刻发生变化。在系统中时刻发生变化的数字,首先能想到的就是时间,因为时间实时都在发生变化,不可能出现同样的值。

  那么就可以将获取系统的时间,然后作为随机数的种子。时间函数time原型如下:

__CRT_INLINE time_t __cdecl time(time_t *_Time) { return _time64(_Time); }

  调用time函数后,它就会返回当前系统的时间的秒数,它的参数可以直接设置为NULL。

image.png

  调用time函数时,需要添加头文件time.h。将时间值作为随机种子,这样每次生成的随机数就会不同,但是通过上面的输出结果可以看到,每次生成的随机数大小都变化很大,如果要将随机数的大小控制在一定范围内要怎么办呢?

  要控制数字的范围,那么可以使用数学的取余数运算,如果要将生成的数字控制在10以内,那么对生成的数字除以10,然后取余数。这样余数的大小就不会超过10。

image.png

  这里对生成的随机数除以100取余,这样最后产生的随机数都会在100以内。

到此这篇关于C语言中随机数rand()函数详解的文章就介绍到这了,更多相关C语言rand()函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言中随机数rand()函数详解

本文链接: https://www.lsjlt.com/news/139424.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言中随机数rand()函数详解
      在生活中很多场景下都需要产生随机数,比如抽奖,打牌,游戏等场景下就需要使用随机数。在C语言标准库函数里面有专门用来产生随机数的函数rand,它的函数原型如下:...
    99+
    2022-11-13
  • C语言的随机数rand()函数详解
    在生活中很多场景下都需要产生随机数,比如抽奖,打牌,游戏等场景下就需要使用随机数。在C语言标准库函数里面有专门用来产生随机数的函数rand,它的函数原型如下: int __cde...
    99+
    2022-11-13
  • C语言使用rand函数生成随机数
    目录rand()函数函数原型:初步使用生成0到99的随机数再次运行 发现问题查看rand()函数的官方文档srand()函数srand的官方介绍初步使用srand()再次运行发现问题...
    99+
    2022-11-12
  • C语言的随机数rand()函数怎么用
    这篇文章主要为大家展示了“C语言的随机数rand()函数怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言的随机数rand()函数怎么用”这篇文章吧。在生活中很多场景下都需要产生随机数,...
    99+
    2023-06-29
  • 详解Go语言中rand(随机数)包的使用
    目录包"math/rand"随机数种子随机函数rand.Int()rand.Intn(n)实例其他随机函数按类型随机类指定随机范围类伪随机排列的切片生成标准正态分...
    99+
    2022-11-11
  • C语言中如何用rand()和srand()函数产生伪随机数
    这篇文章主要介绍“C语言中如何用rand()和srand()函数产生伪随机数”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言中如何用rand()和srand()函数产生伪随机数”文章能帮助大家解...
    99+
    2023-06-16
  • C语言中怎么利用rand()和srand()函数产生伪随机数
    今天就跟大家聊聊有关C语言中怎么利用rand()和srand()函数产生伪随机数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。rand()会返回一随机数值,范围在0至RAND_MAX...
    99+
    2023-06-17
  • C++中的随机数函数详解
    C++中的随机数函数详解随机数在计算机编程中起着重要的作用,它可以用于模拟随机事件、生成随机数序列等多种应用。C++语言中提供了一系列的随机数函数,方便开发人员进行随机数的生成和应用。本文将详细介绍C++中的随机数函数的使用方法和注意事项。...
    99+
    2023-11-18
    随机数生成器(Random Number Generator) 伪随机数(Pseudorandom Number) 随机
  • C语言实现随机读写文件的函数详解
    目录1.fseek2.ftell3.rewind总结在上一篇博客中,我详细讲解了如何使用C语言顺序读写文件。所谓顺序读写,就是按照顺序,挨个挨个的读或者写,换句话说,我必须先读第一个...
    99+
    2023-05-14
    C语言随机读写文件 C语言读写文件 C语言 文件
  • C语言中的rand()和rand_r()详解
    目录背景rand()和rand_r()的区别rand()rand_r()总结背景 最近在学《并行程序设计导论》这门课,在做使用Pthreads并行化蒙特卡洛法估计 π \pi π的实...
    99+
    2022-11-12
  • C语言中scanf函数详解
    scanf函数是C语言中用于从标准输入流中读取数据的函数。它的原型如下:```cint scanf(const char *form...
    99+
    2023-09-13
    C语言
  • PHP中随机函数rand()的使用方式
    这篇文章主要讲解了“PHP中随机函数rand()的使用方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中随机函数rand()的使用方式”吧!首先二话不说,创建一个PHP示例文件dem...
    99+
    2023-06-20
  • php rand函数生成相同随机数如何解决
    这篇文章主要介绍了php rand函数生成相同随机数如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php rand函数生成相同随机数如何解决文章都会有所收获,下面我们一起来看看吧。首先,让我们看一下ra...
    99+
    2023-07-05
  • C语言lseek()函数详解
     头文件: #include <sys/types.h> #include <unistd.h> 函数原型: off_t lseek(in...
    99+
    2022-11-12
  • C语言memset函数详解
    目录一、memset函数原型:二、使用memset函数三、给int类型赋值为1四、扒开内存五、memset给变量赋值总结在c语言中,使用变量前,需要先对变量的值进行初始化。数组在内存...
    99+
    2022-11-12
  • 详解C语言之函数
    目录函数的调用函数调用方式函数嵌套调用递归调用内部函数与外部函数内部函数外部函数局部变量与全局变量局部变量全局变量总结函数的调用 函数调用方式 函数语句调用 函数表...
    99+
    2022-11-12
  • C# Random类随机函数实例详解
    目录引言一、创建界面二、效果展示三、Random类方法四、代码逻辑总结:引言 Random类是非常值得学习的一个类,所以我们今天一起学习一下Random这个类,对于模拟数据这个是随机...
    99+
    2022-11-13
  • C语言rand和srand函数使用方法介绍
    目录前言随机数的本质重新播种生成一定范围内的随机数连续生成随机数前言 在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌。 在C语言中...
    99+
    2023-02-11
    C语言rand和srand C语言rand方法 C语言srand方法
  • C语言rewind与fseek函数之随机读写文件的用法详解
    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据。但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写。这种...
    99+
    2022-11-12
  • Java和c语言随机数Random代码详细
    目录一、随机数的创建步骤1.导包2.创建对象3.数据接收二、Java随机数游戏三、c语言的猜数字一、随机数的创建步骤 1.导包 所谓导包就是在Java中已经定义好的文件,我们直接引...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作