HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    c语言rand函数生成的随机数范围(c语言生成1~100随机数)

    发布时间:2023-05-23 07:14:04     稿源: 创意岭    阅读: 128        

    大家好!今天让创意岭的小编来大家介绍下关于c语言rand函数生成的随机数范围的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    只需要输入关键词,就能返回你想要的内容,有小程序、在线网页版、PC客户端和批量生成器hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    问友Ai官网:https://ai.de1919.comhO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    本文目录:hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    c语言rand函数生成的随机数范围(c语言生成1~100随机数)hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    如何在C语言中生成一定范围内的随机数?hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    用rand函数吧,好久不用C语言,不太记得,貌似是int a=rand()% X(X即范围)这是伪随机数
    #include<time.h>
    srand(time(NULL));使用前用这条语句初始化
    使用int a=rand() / RAND_MAX * n;
    就得到真正的随机数

    在c语言中怎样使用rand产生100-1000hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    建议你先研究下rand的用法。如下:
    rand和srand的用法
    首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明。
    rand(产生随机数)
    表头文件: #include<stdlib.h>
    定义函数 :int rand(void)
    函数说明 :
    因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。rand ()产生的是假随机数字,每次执行时是相同的。若要不同,以不同的值来初始化它.初始化的函数就是srand()。
    返回值:
    返回0至RAND_MAX之间的随机整数值,RAND_MAX的范围最少是在32767之间(int),即双字节(16位数)。若用unsigned int 双字节是65535,四字节是4294967295的整数范围。
    0~RAND_MAX每个数字被选中的机率是相同的。
    范例:
    /* 产生介于1 到10 间的随机数值,此范例未设随机数种子,完整的随机数产生请参考
    srand()*/
    #include<stdlib.h>
    main()
    {
    int i,j;
    for(i=0;i<10;i++)
    {
    j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
    printf("%d ",j);
    }
    }
    执行:
    9 4 8 8 10 2 4 8 3 6
    9 4 8 8 10 2 4 8 3 6 //再次执行仍然产生相同的随机数
    srand(设置随机数种子)
    表头文件:#include<stdlib.h>
    定义函数:void srand (unsigned int seed);
    函数说明:
    srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。
    范例
    /* 产生介于1 到10 间的随机数值,此范例与执行结果可与rand()参照*/
    #include<time.h>
    #include<stdlib.h>
    main()
    {
    int i,j;
    srand((int)time(0));
    for(i=0;i<10;i++)
    {
    j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
    printf(" %d ",j);
    }
    }
    执行:与rand范例比较
    5 8 8 8 10 2 10 8 9 9
    2 9 7 4 10 3 2 10 8 7
    又或:
    用"int x = rand() % 100;"来生成 0 到 100 之间的随机数这种方法是不或取的,比较好的做法是: j=(int)(n*rand()/(RAND_MAX+1.0))产生一个0到n之间的随机数
    int main(void)
    {
    int i;
    time_t t;
    srand((unsigned) time(&t));
    printf("Ten random numbers from 0 to 99\n\n");
    for(i=0; i<10; i++)
    printf("%d\n", rand() % 100);
    return 0;
    }
    除以上所说的之外,补充一点就是srand这个函数一定要放在循环外面或者是循环调用的外面,否则的话得到的是相同的数字。
    MSDN中的例子。
    // crt_rand.c
    // This program seeds the random-number generator
    // with the time, then displays 10 random integers.
    //
    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    int main( void )
    {
    int i;

    // Seed the random-number generator with current time so that
    // the numbers will be different every time we run.
    //
    srand( (unsigned)time( NULL ) );
    // Display 10 numbers.
    for( i = 0; i < 10;i++ )
    printf( " %6d\n", rand() );
    printf("\n");
    // Usually, you will want to generate a number in a specific range,
    // such as 0 to 100, like this:
    {
    int RANGE_MIN = 0;
    int RANGE_MAX = 100;
    for (i = 0; i < 10; i++ )
    {
    int rand100 = (((double) rand() /
    (double) RAND_MAX) * RANGE_MAX + RANGE_MIN);
    printf( " %6d\n", rand100);
    }
    }
    总结:
    我们知道rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种了,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了 srand()函数,它的原形是void srand( int a) 功能是
    初始化随机产生器既rand()函数的初始值,即使把种子的值改成a; 从这你可以看到通过sand()函数,我们是可以产生可以预见的随机序列,
    那我们如何才能产生不可预见的随机序列呢?我们可能常常需要这样的随机序列,是吧。利用srand((unsign)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的,对了,你知道time() 函数的功能是返回从1970/01/01到现在的秒数的吧,可能这个起始时间不正确,你查一下对不对吧,C还提供了另一个更方便的函数, randomize()
    原形是void randomize(),功能是用来始初rand() 的种子的初始值,而且该值是不确定的,它相当于srand((unsign)(time(NULL)) 不过应注意的是randomize()的功能要通过time来实现所以在调用它时头文件要包含time.h罢了。

    C语言怎样产生一定范围的随机数?hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    编译环境为:vs2013
    产生1到3的整型随机数的代码如下:
    #include<stdio.h>
    #include<time.h>
    #include<stdlib.h>
    #define max 3   //这个函数的意义为:随机生成最大的数为3
    #define min 1    //这个函数的意义为:随机生成最小的数为1
    int main()
    {
    int num;
    srand(time(0));
    num = rand() % (max - min) + min;  // 这里的意义,“%”为模运算
    printf("随机数为:%dn", num);
    system("pause");  //这个代码可以让弹出的黑框不会一下就消失
    return 0;
    }hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    扩展资料:hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    根据密码学原理,随机数的随机性检验可以分为三个标准: hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    条件一、统计学伪随机性。统计学伪随机性指的是在给定的随机比特流样本中,1的数量大致等于0的数量,同理,“10”“01”“00”“11”四者数量大致相等。类似的标准被称为统计学随机性。满足这类要求的数字在人类“一眼看上去”是随机的。hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    条件二、密码学安全伪随机性。其定义为,给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分。hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    条件三、真随机性。其定义为随机样本不可重现。实际上只要给定边界条件,真随机数并不存在,可是如果产生一个真随机数样本的边界条件十分复杂且难以捕捉(比如计算机当地的本底辐射波动值),可以认为用这个方法演算出来了真随机数。hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    随机数分为三类:
    hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ①伪随机数:满足第一个条件的随机数。hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ②密码学安全的伪随机数:同时满足前两个条件的随机数。可以通过密码学安全伪随机数生成器hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    计算得出。hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ③真随机数:同时满足三个条件的随机数。hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司



    hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    c语言rand函数生成的随机数范围(c语言生成1~100随机数)hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    如何用c语言产生一定范围内的随机数?hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    利用srand((unsigned int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    3) 根据需要多次调用rand(),从而不间断地得到新的随机数;hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    下面是0~32767之间的随机数程序:hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #include <stdlib.h>hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #include <stdio.h>hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #include <time.h>           // 使用当前时钟做种子hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    void main(void)hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    {int i;hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    srand((unsigned)time( NULL ) );          // 初始化随机数hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    for(i = 0; i < 10;i++)                          // 打印出 10 个随机数hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    printf("%dn", rand() );hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    根据上面的程序可以很容易得到0~1之间的随机数:hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #include <stdlib.h>hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #include <stdio.h>hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #include <time.h> hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    int main( )hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    {int i;hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    srand((unsigned)time( NULL ) );  hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    for(i = 0; i < 10;i++)hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    printf("%5.2fn", rand()/32767.0);hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    而产生1~100之间的随机数可以这样写:hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #include <stdlib.h>hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #include <stdio.h>hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #include <time.h> hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    int main( )hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    {int i;hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    srand((unsigned)time( NULL ) );  hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    for(i = 0; i < 10;i++)hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    printf("%dn", rand()%100+1);hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    扩展资料:hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    C语言高效编程技巧:hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    一:以空间换时间hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    二:数学方法解决问题 hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    数学是计算机之母,没有数学的依据和基础,就没有计算机发展,所以在编写程序的时候,采用一些数学方法会对程序的执行效率有数量级的提高。hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    三:使用位操作hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    实现高效的C语言编写的第三招----使用位操作,减少除法和取模的运算。hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效提高程序运行的效率。hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    参考资料来源:百度百科-C语言hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    c++中rand()函数的范围hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

      rand函数范围:在某些平台下(例如 Windows)RAND_MAX 只有 32768。如果需要的范围大于 32768,那么指定 min 和 max 参数就可以生成大于 RAND_MAX 的数了,或者考虑用 mt_rand() 来替代它。
      rand函数不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。而使用同种子相同的数调用 rand()会导致相同的随机数序列被生成。
      C语言
      srand((unsigned)time(NULL))则使用系统定时/计数器的值作为随机种子。每个种子对应一组根据算法预先生成的随机数,所以,在相同的平台环境下,不同时间产生的随机数会是不同的,相应的,若将srand(unsigned)time(NULL)改为srand(TP)(TP为任一常量),则无论何时运行、运行多少次得到的“随机数”都会是一组固定的序列,因此srand生成的随机数是伪随机数。
      库函数中系统提供了两个函数用于产生随机数:srand()和rand()。 原型为:
      函数一:int rand(void);
      返回一个[0,RAND_MAX]间的随机整数。
      函数二:void srand(unsigned seed);
      参数seed是rand()的种子,用来初始化rand()的起始值。
      但是,要注意的是所谓的“伪随机数”指的并不是假的随机数。其实绝对的随机数只是一种理想状态的随机数,计算机只能生成相对的随机数即伪随机数。计算机生 成的伪随机数既是随机的又是有规律的 —— 一部份遵守一定的规律,一部份则不遵守任何规律。比如“世上没有两片形状完全相同的树叶”,这体现到了事物的特性 —— 差异性;但是每种树的叶子都有近似的形状,这正是事物的共性 —— 规律性。从这个角度讲,我们就可以接受这样的事实了:计算机只能产生伪随机数而不是绝对的随机数。
      系统在调用rand()之前都会自动调用srand(),如果用户在rand()之前曾调用过srand()给参数seed指定了一个值,那么 rand()就会将seed的值作为产生伪随机数的初始值;而如果用户在rand()前没有调用过srand(),那么系统默认将1作为伪随机数的初始 值。如果给了一个定值,那么每次rand()产生的随机数序列都是一样的~~
      所以为了避免上述情况的发生我们通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))来 产生种子。如果仍然觉得时间间隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某个合适的整数。 例如,srand((unsigned)time(NULL)*10)
      另外,关于time_t time(0):time_t被定义为长整型,它返回从1970年1月1日零时零分零秒到目前为止所经过的时间,单位为秒。
      srand()、rand()用法举例:
      #include<time.h>
      #include<stdlib.h>
      #include<stdio.h>
      
      
      void main()
      {
      inti,j;
      srand((int)time(0));
      for(i=0;i<10;i++)
      {
      j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
      printf("%d",j);
      }
      }
      
      

    以上就是关于c语言rand函数生成的随机数范围相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。hO0创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司


    推荐阅读:

    c语言文章生成器(c语言生成器官网)

    c语言是一种什么语言(c语言是一种什么语言-)

    数据结构c语言版和java版区别(数据结构c语言版和java版区别在哪)

    南开大学science(南开大学滨海学院)

    vi设计模板高清(vi设计模板全套)