C语言中随机数的生成(rand函数和srand函数)

这篇具有很好参考价值的文章主要介绍了C语言中随机数的生成(rand函数和srand函数)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CSDN话题挑战赛第2期
参赛话题:学习笔记

学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?

目录

一.rand函数

应用

存在问题

二.srand函数

应用

存在问题

用time(0)实现真正的随机数。

三.随机函数的具体应用

1.产生随机数范围[1-10]

2.产生随机数范围[66,88]

3.总结


一.rand函数

C语言中如果我想要输出一个随机数,那么我们就需要用rand函数,我们先来看看这个函数的相关信息
C语言中随机数的生成(rand函数和srand函数)

 rand函数可以随机的产生 0 ~ rand_max 的随机数,定义类型不同最大值也不同,rand 函数包含在头文件stdlib.h中。我们再来看看这rand_max是多少
C语言中随机数的生成(rand函数和srand函数)

 0x7fff,这是一个十六进制数(以0x开头),将它变成十进制就是32767,所以rand函数取随机数的范围是:0~32767

应用

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a=0;
    int i=0;
    while(i<=10){
    a=rand();
    printf("%d\n",a);
    i++;
    }

}

运行我们来看看结果:
C语言中随机数的生成(rand函数和srand函数)

存在问题

我运行了两次,一次循环10次,一次循环20次。看到运行的结果我们发现一个很严重的问题——用rand函数输出的随机数是有顺序的,它的输出结果是一成不变的,很明显这不是我们需要的随机数,这时我们就需要用到srand函数。

二.srand函数

包含文件:stdlib. h
srand函数是随机数发生器的函数。原型:void srand(unsigned int seed);  srand和rand()配合使用产生伪随机数序列。
此函数可以设定rand函数所用的随机数产生演算法的种子值。任何大于一的种子值都会将rand随机数所产生的虚拟随机数序列重新设定一个起始点。

应用

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

int main()
{
    int a=0;
    int i=0;
    srand(1);
    while(i<=20){
    a=rand();
    printf("%d\n",a);
    i++;
    }

}

在这里我先定义种子值为1,我在之后运行会定义种子值为2和5来看看他们的效果:
C语言中随机数的生成(rand函数和srand函数)

存在问题

 我们发现任何大于一的种子值都会将rand随机数所产生的虚拟随机数序列重新设定一个起始点。但这很明显也不是我们需要的随机数,因为本质上它还算不是输出了随机数,他需要给一个随机种子值才能输出一个随机数,那么我们有两种方法来解决这个问题:通常可以利用 time(0) 或 getpid(0) 作为seed的返回值,

用time(0)实现真正的随机数。

首先需要头文件math.h

应用

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
    int a=0;
    int i=0;
    srand((unsigned int)time(NULL));
    while(i<=20){
    a=rand();
    printf("%d\n",a);
    i++;
    }

}

我们多运行几次看看:
C语言中随机数的生成(rand函数和srand函数)

 很明显,之前存在的问题已经解决了,现在输出的就是我们所想的随机数

三.随机函数的具体应用

我们虽然已经可以输出随机数,但是rand函数的范围是0~32767,在我们应用过程中这往往不是我们想要的,我们想可不可以缩小它的范围或者说给定他一个范围,比如说在0~100中输出10个随机数,这些情况才是我们更需要的,那么接下来向大家介绍一下该怎么操作

1.产生随机数范围[1-10]

代码:
 

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
    int a=0;
    int i=0;
    srand(time(0));//这样写跟srand((unsigned int)time(NULL));同义
    while(i<=20){
    a=rand()%11;
    printf("%d\n",a);
    i++;
    }

}

结果:
C语言中随机数的生成(rand函数和srand函数) 

2.产生随机数范围[66,88]

其余部分不要变,只要将a=rand()%11;改为a=66+rand()%23;即可

3.总结

产生随机数范围[n,m]

只要写成a=n+rand()%(m-n+1);即可文章来源地址https://www.toymoban.com/news/detail-440816.html

到了这里,关于C语言中随机数的生成(rand函数和srand函数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【LINUX相关】生成随机数(srand、/dev/random 和 /dev/urandom )

    在一个循环中,生成多组随机值,发现最终的结果都一样,结果是调用的函数如下,在函数中设置了随机种子,且是以秒为单位,那么在一秒类,由于都是用一个种子,srand又是伪随机,所以最终生成的都是同一组随机字符。 2.1 修改种子 (1)将 srand(time(NULL)); 放到循环外面

    2024年02月12日
    浏览(47)
  • 生成随机数——C语言

    在C语言中,可以使用标准库函数 rand() 来生成随机数。需要注意的是, rand() 函数生成的是伪随机数,具体的随机序列取决于种子(seed)的值。 下面是一个简单的示例代码,展示如何在C语言中生成随机数: 在上述代码中,首先包含了 stdio.h 、 stdlib.h 和 time.h 头文件来使用相

    2024年02月12日
    浏览(55)
  • C语言中生成随机数的方法

      生成随机数是指按照一定的规律,产生一些看似无规律的数字序列。在计算机中,通常使用随机数生成器来生成随机数。随机数生成器可以分为真随机数生成器和伪随机数生成器两种。真随机数生成器是利用物理现象产生的随机事件(如放射性衰变)来生成随机数。而伪

    2024年02月05日
    浏览(53)
  • rexp() R函数,生成服从指数分布的随机数

    参考: R语言 【rexp】__BANA的博客-CSDN博客

    2024年02月07日
    浏览(38)
  • 利用随机数生成猜数字游戏【C语言】

    自动生成随机数的范围:0-99 玩家猜数字,猜数字的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束 根据游戏要求,第一步就是 先生成随机数 ,这里我们主要利用到三种函数 rand 、 srand 、 time 函数。所以下面依次介绍这三种函数。 我们来看一段代

    2024年02月10日
    浏览(43)
  • 你知道C语言中随机数是如何生成的吗~?

    目录 1.你听说过函数rand的吗? 2.引入srand函数~ 3.time函数的使用~ 4.随机数的实现! 5. 如何控制随机数的范围呢~ 6.这时候我们就可以写出一些比较有趣的代码啦~  7.对我们说的一些话~                            不是每个人都能做自己想做的事,成为自己想成为的人。  

    2024年02月22日
    浏览(44)
  • C语言生成随机数【简易抽卡代码为例】

    本文将详细解释如何在C语言中生成随机数,并介绍应用的小技巧 c语言生成一个真正的随机数需要用到三个函数: rand()、srand()和time()。 函数介绍 头文件 : #includestdlib.h 函数声明 : int rand(void) 作用 ; 生成一个伪随机数序列,随机数取值范围是0~RAND_MAX PS - RAND_MAX其实是一个宏

    2024年02月04日
    浏览(52)
  • C语言随机数生成和范围设置详解【超详细教程】

    本文详细介绍了C语言中如何使用rand函数生成随机数以及利用srand函数设置随机数的种子,同时解释了如何控制随机数的范围。适合初学者学习和实践。

    2024年02月05日
    浏览(50)
  • Jmeter-BeanShell脚本中for循环里面使用random随机数函数,每次生成的都一样

    预想的是每次循环生成的随机数不一样,但实际使用Random函数生成的是重复的。 以下是部分原代码: 生成的updateList为: [{“id”:235214718648462,“dataId”:null,“data”:6708,“type”:“number”}, {“id”:318239582208002,“dataId”:333989510397954,“data”:6708,“type”:“number”}, {“id”:33398948

    2024年01月20日
    浏览(55)
  • R语言【base】——.Random.seed(),RNGkind(),RNGversion(),set.seed():随机数生成器

    Package  base  version 4.2.0 .Random.seed是一个整数向量,包含R中生成随机数的随机数生成器(RNG)状态。它可以保存和恢复,但不应该被用户更改。 RNGkind是一个更友好的接口,用于查询或设置正在使用的RNG类型。 RNGversion在早期的R版本中可以用来设置随机生成器(为了再现性)。 set

    2024年02月22日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包