精华内容
下载资源
问答
  • 2021-05-24 01:49:08

    在C语言函数库中包含了一个产生随机数的函数: int rand( void );

    函数返回的是一个界于0~32767之间的伪随机数,包括0和32767。注意,这里产生的是伪随机数,不是真正意义上的随机数,看下面的程序:

    #include "stdlib.h"

    #include "stdio.h"

    void main(  )

    {

    /* 输出一个伪随机数 */

    printf( " %d\n", rand() ); }

    运行结果: 346

    多次运行这个程序,发现每次产生的结果都是346(不同的机器可能产生的结果不一样),这就是所谓的伪随机数。那么,如何才能产生真正意义上的随机数呢?这就有一个随机种子的问题。在C语言标准函数库中,有这么一个函数:多次运行这个程序,发现每次产生的结果都是346(不同的机器可能产生的结果不一样),这就是所谓的伪随机数。那么,如何才能产生真正意义上的随机数呢?这就有一个随机种子的问题。在C语言标准函数库中,有这么一个函数:多次运行这个程序,发现每次产生的结果都是346(不同的机器可能产生的结果不一样),这就是所谓的伪随机数。那么,如何才能产生真正意义上的随机数呢?这就有一个随机种子的问题。在C语言标准函数库中,有这么一个函数:

    void srand( unsigned int seed );

    参数中的seed就是用来产生一个随机数系列的种子,缺省值是1。所以,要产生真正意义上的随机数,就要求每次提供的种子不一样,一般情况下,都设置时间为随机函数的种子。看下面的一段程序:

    #include "stdlib.h"

    #include "stdio.h"

    #include "time.h"

    void main(   )

    {

    int i;

    /*将当前时间设置成随机函数的种子,所以每次产生的数都不一样*/

    srand( (unsigned)time( NULL ) );    //注: 单片机系统中,可用系统时钟滴答或者定时器产生一个不断累加的数来代替time

    / * 输出10个随机数*/

    for( i = 0; i < 10;i++ )

    printf( “ %d\n”, rand() );

    }

    运行结果: 6929 8026 21987 30734 20587 6699 22034

    25051 7988 10104 每次运行这个程序,产生的随机数都不一样,这样就达到要求了。若要输出1~10之间的随机数,可将最后一个printf中的rand()改为rand()%10+1

    25051 7988 10104

    每次运行这个程序,产生的随机数都不一样,这样就达到要求了。若要输出1~10之间的随机数,可将最后一个printf中的rand()改为rand()%10+1

    更多相关内容
  • c语言随机数函数示例

    2020-12-26 10:21:31
    void srand( unsigned int seed );head file is <stdlib>RemarksThe srand function sets the starting point for generating a series of pseudorandom integers. To reinitialize the generator, use 1 as the ...
  • c语言随机数c语言随机数
  • C语言随机数的生成【详解】

    万次阅读 多人点赞 2020-06-10 13:39:48
    (rand 函数 srand 函数)(生成范围随机数公式)(随机数实例:选择排序等)

    一、rand 函数 和 srand 函数

    在C语言中比较常用的随机函数是 rand 函数,它可以随机的产生 0 ~ rand_max 的随机数,定义类型不同最大值也不同,rand 函数包含在头文件stdlib.h中。

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        int a=rand();
        printf("%d",a);
        return 0;
    }

    运行结果…………………………………………
    在这里插入图片描述
    你会发现每次产生的随机数都是相同的,因为rand 函数产生的随机数是伪随机数,是根据一个数按照某个公式推算出来的,这个数我们称之为“种子”,但是这个种子在系统启动之后就是一个定值。

    要想每次产生的随机数不一样,那么,我们就要用到 srand 函数。

    srand() 函数原型是:

    void srand (usigned int seed);

    rand() 产生随机数时,如果用srand(seed) 播下种子之后,一旦种子相同,产生的随机数将是相同的。当然很多时候刻意让rand() 产生的随机数随机化,用时间作种子 srand(time(NULL)) ,这样每次运行程序的时间肯定是不相同的,产生的随机数肯定就不一样了。

    此段原文链接: https://blog.csdn.net/lvyibin890/article/details/80141412.如果想看rand和srand函数详解,可观看此文。

    通常可以利用 time(0) 或 getpid(0) 作为seed的返回值,下面我们只介绍用time(0)实现随机数。

    srand((unsigned)time(NULL));   //用时间作种子
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {
        srand((unsigned)time(NULL));
        int n=rand();
        printf("%d\n",n);
        return 0;
    }

    在这里插入图片描述
    在这里插入图片描述

    此时我们就可以随机产生一个数了。

    二、生成范围随机数公式

    但,作题时我们往往不会用到上面这种方式去产生一个随机数,而是希望产生一定范围内的数据。

    1产生随机数范围:[0,9]

    int a=rand()%10;  //注意10会被整除,所以不包括10

    2产生随机数范围:[0,99]

    int a=rand()%100;

    3产生随机数范围:[66,88]

    int a=66+rand()%23;

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

    int a=m+rand()%(n-m+1);

    接下来举几个例子:

    注意:下面的程序会将 srand((unsigned)time(NULL)) 换成 srand(time(0)),用srand(time(0))方便,且一样可以满足以上产生范围随机数的各种情况。

    三、随机数实例:选择排序等

    ① 随机产生10个[150,270)范围内随机数

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {
        int a[11];
        int i;
        printf("随机产生10个[150,270)范围内随机数:\n\n");
        srand(time(0));   //srand(time(NULL));
        for(i=1;i<=10;i++)
            //一般键盘随机输入10个数方式:scanf("%d",&a[i]);
            a[i]=150+rand()%120;
        for(i=1;i<=10;i++)
            printf("%d ",a[i]);
        printf("\n");
        return 0; 
    }

    运行结果…………………………………………
    在这里插入图片描述
    ② 随机产生10个[0,99)范围内随机数(指针

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {
        int a[10]; 
        int *p; 
        printf("随机产生10个[0,99)范围内随机数:\n\n");
        srand(time(0));    //srand(time(NULL));    
        for(p=a;p<(a+10);p++)
            *p=rand()%100; 
        for(p=a;p<(a+10);p++)
            printf("%d ",*p);   //使用指针指向当前的数组元素 
        printf("\n"); 
        return 0; 
    }

    运行结果…………………………………………
    在这里插入图片描述
    ③ 地址 — 随机数

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {
        int a[10];
        int i;
        printf("产生10个[0,99]随机数:\n\n");
        srand(time(0));          //srand(time(NULL));   
        for(i=0;i<10;i++)
        {
            a[i]=rand()%100;      //随机函数产生 [0,100)
            printf("%d  ",a[i]); 
        }
        printf("\n\n");
        printf("  地址   --- 随机数\n\n"); 
        for(i=0;i<10;i++)
            printf(" %d --- %d\n",a+i,*(a+i));   //通过原数组名和元素序号计算地址 
        printf("\n"); 
        return 0; 
    }

    运行结果…………………………………………在这里插入图片描述

    ④ 实例:选择排序

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {
        int a[10];
        int i,t,j,min;
        srand(time(0));
        printf("随机产生10个[0,99]随机数:\n");
        for(i=0;i<10;i++)
            a[i]=rand()%100;      //产生10随机数
        for(i=0;i<10;i++)
            printf("%d ",a[i]);   //输出随机数
        printf("\n\n");
        for(i=0;i<=9;i++)
        {
            min=i;
            for(j=i+1;j<10;j++)
               if(a[min]>a[j])
                   min=j;
           if(i!=min)
           {
               t=a[i];
               a[i]=a[min];
               a[min]=t;
           } 
        } 
        printf("由小到大排序:\n");
        for(i=0;i<10;i++)
            printf("%d ",a[i]);
        return 0;
    }

    运行结果…………………………………………
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • C语言随机数生成

    千次阅读 2022-03-05 18:02:38
    随机数生成

    在写代码的过程中,我们常常会生成随机数。例如三子棋中的电脑随机下棋,还有猜数字中的随机数等等。

    那么我们应该如何来生成随机数呢?

    在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为:

    int rand(void);     void表示不需要参数传递

    下面看一个例子:

    #include <stdio.h>

    #include <stdlib.h>

    int main()

    {

    int n = rand();

    printf("%d\n",n);

    return 0;}

    运行结果为:41。

    但是多次运行上面的代码,我们会发现每一次运行的结果都为41,这是为什么呢?随机数怎么不随机了?

    其实,这是因为rand()随机生成的随机数是伪随机数,是根据一个数值按照某个公式推算出来的,这个数值我们称之为“种子”。种子和随机数之间的关系是一种正态分布,如下图所示:

     种子在每次启动计算机时是随机的,但是一旦计算机启动以后它就不再变化了;也就是说,每次启动计算机以后,种子就是定值了,所以根据公式推算出来的结果(也就是生成的随机数)就是固定的。

    这里我们就要用到srand()函数来使这个种子发生变化,srand()函数的用法为:

    void srand(unsigned int seed);      它的头文件为<stdlib.h>。

    它需要一个 unsigned int 类型的参数。在实际开发中,我们可以用时间作为参数,只要每次参数的时间不同,那么生成的种子就不同,最终的随机数也就不同。

    使用 <time.h> 头文件中的 time() 函数即可得到当前的时间(精确到秒),就像下面这样:

    srand((unsigned)time(NULL));

    那么,我们生成随机数代码就如下了:

    #include <stdio.h>

    #include <stdlib.h>

    #include <time.h>

    int main() {

    int n=0;

    srand((unsigned)time(NULL));

    a = rand();

    printf("%d\n", n);

    return 0;

    }

    这样我们多次运行程序,每次产生的随机数都不一样了。

    如何生成一定范围内的随机数:

    int a = rand() % 10;    //产生0~9的随机数

    int a = rand() % 19+23;    //产生23~41的随机数
    

     

    展开全文
  • C语言随机数使用方法

    千次阅读 2021-05-27 04:49:00
    随机数在编程中还是有所应用,最近从网上学习到这方面一点知识,想把它写下来。一、使用随机数所需要的头文件和函数:头文件:cstdlib(C++ 的 standard libraray) ctime函数: rand() srand(int seed); time(NuLL);...

    随机数在编程中还是有所应用,最近从网上学习到这方面一点知识,想把它写下来。

    一、使用随机数所需要的头文件和函数:

    头文件:cstdlib(C++ 的 standard libraray)    ctime

    函数:    rand()       srand(int seed);   time(NuLL);

    二、随机数的的理解:

    随机数不是真的随机数,它是通过公式(有很多)计算出来的。它就像函数一样——srand(seed)中的seed好比自变量x,而rand()则是seed对应的因变量的值。

    换句话来说,如果seed值固定,那么产生的随机数也不变。 代码如下:

    代码如下:

    #include #include#include

    using namespacestd;intmain()

    {

    srand(1);for(int i = 1; i <= 5; i ++)

    {

    cout<< rand() << " ";

    }return 0;

    }

    运行n次结果

    41 18467 6334 26500 19169

    --------------------------------

    Process exited after 0.576 seconds with return value 0

    请按任意键继续. . .

    如何产生更像“随机数”的随机数呢,这时候time(NULL)就排上用场。time(NULL)会返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数,因为时间在变,所以由rand()产生的随机数就不固定了。

    代码如下:

    #include #include#include

    using namespacestd;intmain()

    {

    srand(time(NULL));for(int i = 1; i <= 5; i ++)

    {

    cout<< rand() << " ";

    }return 0;

    }

    运行第一次结果:

    12114 22257 23578 61 16877

    --------------------------------

    Process exited after 0.5004 seconds with return value 0

    请按任意键继续. . .

    运行第二次结果:

    12212 17030 2447 1064 31402

    --------------------------------

    Process exited after 0.4893 seconds with return value 0

    请按任意键继续. . .

    (可以看到,每次的结果不同)

    三、随机数的使用公式

    rand() % 随机数的范围的长度 + 随机数范围的最小值

    举例:如果我要产生10 — 15 的随机数,公式为 rand() % (15 - 10 + 1) + 10。

    展开全文
  • C语言中,我们一般使用 头文件中的 rand() 函数来生成随机数,它的用法为:int rand (void);void 表示不需要传递参数。C语言中还有一个 random() 函数可以获取随机数,但是 random() 不是标准函数,不能在 VC/VS ...
  • C语言习题:猜数字游戏(C语言随机数) 需要了解C语言随机数的生成方法: 在C语言中比较常用的随机函数是 rand 函数,它可以随机的产生 0 ~ rand_max 的随机数,定义类型不同最大值也不同,rand 函数包含在头文件...
  • C语言随机数的使用

    千次阅读 2021-03-10 10:32:03
    C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为: int rand (void); 【示例】13~63 范围内随机数 #include <stdio.h> #include <stdlib.h> #include <...
  • } //随机数表(外部函数可修改) char randf[] = "468568045822118454423354674584094699778282180298384527244442495668846564013782034928346526815437926438692864957216829608432856028627342758622285764518349...
  • 转自:http://zhidao.baidu.com/question/334364810.html调用随机数函数 rand()() 的时候, 实际得到的这个随机数并...这个初始的值就是"随机数种子", 也就是说,如果随机数种子相同,计算出的随机数数列是相同的。...
  • 有一次用random函数生成随机数,发现每次生成的随机数都一样,于是决定学习为什么会一样。 1.rand()函数 (1)头文件为:#include<stdlib.h> (2)随机数范围: 假如你想要产生一个10-100之间的随机数那么 ...
  • rand-C语言随机数范围

    千次阅读 2021-11-16 15:23:27
    rand() C语言随机数范围 1.简介 rand()函数用来产生随机数,但是,rand()的内部实现是用线性同余法实现的,是伪随机数,由于周期较长,因此在一定范围内可以看成是随机的。 rand()会返回一个范围在0到RAND_MAX(至少...
  • C语言随机数的生成及三个具体案例详解

    千次阅读 多人点赞 2022-02-10 09:52:08
    C语言随机数的生成讲解
  • C语言随机数的产生

    2021-05-26 00:47:40
    调试环境:win10+vs2015在编程中我们经常需要使用随机数用来进行测试,因此就需要使用到rand()函数,这里就来详解一下C语言随机数生成器。rand()函数的原型是:int rand ( void );该函数不需要传参,返回一个伪随机...
  • C语言随机数函数

    千次阅读 2020-10-11 08:18:47
    2 在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。 rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个...
  • C语言基础教程:C语言随机数

    千次阅读 2020-04-21 14:56:57
    1. 随机数概述 编写程序过程中,我们经常需要产生一些随机数随机数在程序中分为两种: 真随机数:完全没有规则,无法预测接下来要产生的数。 伪随机数:通过一些预先设定好的规则产生不能简单预测的数。 当然,...
  • c语言随机数rand函数一探究竟

    千次阅读 2020-02-06 12:17:09
    c语言随机函数randc语言生成随机数一般用法测试仅使用rand()函数,不使用srand()函数的随机性 c语言生成随机数一般用法 #include <stdio.h> #include <time.h> void main() { srand((unsigned)time...
  • c语言随机数

    2019-01-30 00:22:03
    计算机的优点是准确,并不擅长随机和模拟,所以使用的rand()函数并不是真正意义上的随机,而是一种伪随机数使用 rand() 生成随机数之前需要用随机发生器的初始化函数 srand(unsigned seed)(也位于 stdlib.h 中)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,171
精华内容 14,068
关键字:

c语言随机数