首页 > 其他分享 >随机数生成

随机数生成

时间:2024-07-22 22:57:05浏览次数:9  
标签:rand 函数 生成 种子 随机数 time

目录

一、rand函数

二、srand函数

三、time函数


一、rand函数

        我们想要生成一个随机数,可以使用rand函数,rand函数定义在<stdlib.h>头文件中。它的函数原型如下:

int rand(void)

        它能返回一个 0~RAND_MAX 之间的整数,RAND_MAX的大小由编译器厂商设定,但一般是32767。可以设置多个随机数试一下:

        重复运行上面的程序,会发现每次的执行结果都一样,这样就失去了随机数的意义。实际上rand生成的是伪随机数,这种随机数是按照规定的算法以设置的“种子”值为基准计算出来的,所以本质上是不随机(按照某种规则生成)的。因为rand默认种子值是1,所以每次算法计算的结果都是一样的。如果想让每次运行的结果都不同,那么需要让种子值变化起来。

二、srand函数

        srand函数就能用于设置rand函数的种子值(初始化随机数生成器),它也定义在头文件<stdlib.h>中,其函数原型如下:

void srand(unsigned int seed)

        现在又有一个问题,如果我们需要让种子值随机,但是我们想解决的就是rand生成随机数的问题,那不就矛盾了吗?我们不能得到随机的种子值,但是能得到变化的种子值,比如根据时间而变化。

三、time函数

        time函数能获得当前的时间戳,时间戳就是当前的时间与计算机的初始时间1970年1月1日0时0分0秒之间的差值,以秒为单位。它定义在<time.h>头文件中,其函数原型如下:

time_t time(time_t *timer)

        可以看看VS2022 的 time_t的定义:

#ifndef _CRT_NO_TIME_T
    #ifdef _USE_32BIT_TIME_T
        typedef __time32_t time_t;
    #else
         typedef __time64_t time_t;
    #endif
#endif

typedef long                   __time32_t;
typedef __int64                __time64_t;

        本质上 time_t 是32位或64位整型。当time的参数非NULL时,time函数不仅会返回时间戳,还会把返回的时间戳存储在timer指向的内存空间里;当参数为NULL时,time函数只返回时间戳。

        现在有了rand函数、srand函数和time函数,就能生成每次运行都不一样的随机数了,如下:

第一次运行

第二次运行

        最后我们要注意的是,随机数种子只需要设置一次就行了,不要把它放在循环里面,比如这样:

        这样会导致每一轮循环生成的随机数都是一样的,因为程序执行得很快,很多轮循环都会发生在同1秒内,导致时间戳没变,设置的种子值也就不变了。可以看看我把循环次数改为1000后(时间延长),首尾的循环轮次生成的随机数是有变化的:

前面的循环生成的随机数

最后面的循环生成的随机数

标签:rand,函数,生成,种子,随机数,time
From: https://blog.csdn.net/2401_86272648/article/details/140619900

相关文章

  • 【笔记】生成函数 · 进阶(EGF)
    写在前面本文除了例题@.1P4389付公主的背包使用OGF其她的均为EGF0约定0.1一些形象的表达收缩:指一个式子由比较复杂的形式变简单。本文中大概率就是指一个生成函数用封闭形式来表达;多项式的平移:对于任意一个多项式\(A(x)\),向左平移\(m\)位指\(\left(A(x)-\s......
  • 效率与创意的双重飞跃?AI生成工具:你的秘密武器
    作为一名AI爱好者,我积累了许多实用的AI生成工具。今天,我想分享一些我经常使用的工具,这些工具不仅能帮助提升工作效率,还能激发创意思维。我们都知道,随着技术的进步,AI生成工具已经变得越来越智能,能够在多个领域提供强大的支持。它们涵盖了文案写作、图像处理、PPT制作等多个领域......
  • 如何找到提升效率与创造力的神器?揭秘AI生成工具,顶级选择在此
    作为一名AI爱好者,我积累了许多实用的AI生成工具。今天,我想分享一些我经常使用的工具,这些工具不仅能帮助提升工作效率,还能激发创意思维。我们都知道,随着技术的进步,AI生成工具已经变得越来越智能,能够在多个领域提供强大的支持。它们涵盖了文案写作、图像处理、PPT制作等多个领域......
  • 《昇思25天学习打卡营第24天|生成式-Pix2Pix实现图像转换》
    Pix2Pix实现图像转换Pix2Pix概述Pix2Pix是基于条件生成对抗网络(cGAN,ConditionGenerativeAdversarialNetworks)实现的一种深度学习图像转换模型该网络学习从输入图像到输出图像的映射,如Isola等人在Image-to-imagetranslationwithconditionaladversarialnetwor......
  • ##笔记day06-C语言基础:随机数、一维、二维数组、字符数组
    day07笔记1)rand生成随机数1)rand()随机函数头文件:#include<stdlib.h>函数原型:intrand(void);函数功能:生成大于等于0的随机整数参数:void返回值:生成的随机整数2)srand更新随机数种子(srand()函数用于给rand()函数设定种子)头文件:......
  • 【matplotlib】生成各种图表
    一、场景   工作中,可能需要使用脚本分析各种数据,并生成图表 二、工具   matplotlib   https://matplotlib.org/stable/install/index.html 三、安装python-mpipinstall-Upippython-mpipinstall-Umatplotlib  四、生成图表1、折线图imp......
  • busybox一键编译生成arm版本文件系统
    #!/bin/sh#updateimagesforx86_64#gitclonehttps://github.com/torvalds/linux.git--depth=1--verbose#cdlinux#-------#makedefconfig#cparch/x86/configs/x86_64_defconfig.config#modifysomeconfigoption#make-j8bzImage#cd........
  • dedecms织梦更新生成栏目没反应问题总汇
    织梦dedecms栏目无法更新是最头疼的事情,因为导致dedecms栏目不能更新的因素有很多,至于大家都是什么原因导致的我也无法确定,因此整理了笔者所知道的一些原因,希望对大家有所帮助,下面大家跟我一起来看下,你遇到的dede更新栏目无效是下面的哪一种情况:方法/步骤第一种情况:织......
  • 使用hugo生成静态个人博客,速度快,无需安装
    1.简介hugo为使用go语言开发的博客生成程序,支持多种模板,主题,本地运行,将markdown转换为一个网站,适合做文档网站,博客等。hugo在github上有超过70W星。2.下载https://gohugo.io/3.安装运行解压后,仅有一个20M左右的exe文件,在Powershell中执行即可。./hugo.exenewsitequic......
  • 我希望模型生成准确数量的令牌,不多也不少
    有什么技巧或最佳实践可以实现这一目标吗?我尝试过几次提示有没有可以执行此操作的开源模型?我尝试过几次提示,但没有给出最佳结果。先感谢您很难保证模型生成的令牌数量完全准确。但是,可以使用一些技巧和最佳实践来更接近所需的长度:技巧使用专门的......