精华内容
下载资源
问答
  • c语言产生随机数
    2020-02-17 20:36:14

    C语言中的随机数是通过<stdlib.h>中的rand()函数实现的,rand()产生的是一个随机数序列,其中的数与随机数种子有关,例如:在默认情况下,前十个数总会是41、18467、6334、26500、19169、15724、11478、29358、26962、24464。
    随机数种子可以通过srand()函数来设置,比如设置srand(1),则rand()产生的第一个数总会是42。
    为了不每次都通过输入随机数种子来完成随机化,我们可以调用<time.h>中的time(NULL)函数来作为随机数种子。

    最后,可以用 rand()%b+a 将随机数的范围限制在[a,a+b-1]中

    更多相关内容
  • C语言产生随机数C语言产生随机数
  • C语言产生随机数函数

    千次阅读 2022-04-19 21:39:47
    ---生成一个随机数:rand() --- 头文件包含:<stdlib.h> --- 返回值:Rand返回一个随机数 ---备注:rand函数返回一个范围从0到RAND_MAX的伪随机整数。在调用rand之前,使用srand函数为伪随机数生成器播种...

    --- 生成一个随机数:rand() 

    --- 头文件包含:<stdlib.h>

    --- 返回值:Rand返回一个随机数

    ---备注:rand函数返回一个范围从0到RAND_MAX的伪随机整数。在调用rand之前,使用srand函数为伪随机数生成器播种。

    --- 设置一个随机的起点。srand()

    --- 头文件包含:<stdlib.h>

    --- 返回值:没有返回值

    --- 备注:srand函数设置生成随机整数的起始点。要重新初始化生成器,请使用1作为种子参数。任何其他值都会将生成器设置为一个随机的起始点。生成的随机数。在调用rand前,先用srand设定随机数的起点0~32767

    做一个简单的实例:简单书写一个猜数字游!

    主函数部分:

    #include<stdio.h>
    int main()
    {
        srand((unsigned int)time(NULL));   // - time()    ->头文件:<time.h>
        int select = 0;
        do
        {
            Menu();
            printf("请选择=>\n");
            scanf("%d",&select);
            switch (select)
            {
            case 1:
                //printf("玩游戏\n");
                Game();            // - 包含猜数字的整个逻辑的函数
                break;
            case 2:
                printf("游戏退出\n");
                break;
            default :
                printf("输入错误,请重新输入\n");
                break;
            }

        } while (select);
        return 0;
    }

    函数部分:

    void Menu()
    {
        printf("**********************************************\n");
        printf("*************     1-> 猜数字       ***********\n");
        printf("*************     0->  退出        ***********\n");
        printf("**********************************************\n");
    }
    void Game()
    {
        int ret = rand()%100+1;        // - 生成随机数 : 0~32767   ->  取模100计算成1~100数值
        //printf("%d\n",ret);
        int input = 0;
        int guess = 0;
        printf("开始进行猜数字\n");
        while (1)
        {
            scanf("%d", &input);
            if (input > ret)
            {
                printf("猜大了\n");
                guess++;
            }
            else if (input < ret)
            {
                printf("猜小了\n");
                guess++;
            }
            else
            {
                printf("恭喜您猜对了\n");
                printf("您猜错了{%d}次\n",guess);
                break;
            }
        }
    }

    展开全文
  • c语言产生随机数的方法

    千次阅读 2021-11-24 22:55:45
    c语言产生随机数的方法 可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,所以random函数不能在gcc,vc等编译器下编译通过,那么我们如何实现呢? rand()函数; C语言中的rand()函数可以...

    用c语言产生随机数的方法

    可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,所以random函数不能在gcc,vc等编译器下编译通过,那么我们如何实现呢?

    rand()函数;

    C语言中的rand()函数可以用来产生随机数,但并非真正意义上的随机数,它是一个伪随机数,根据函数srand(),我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。

    rand()会返回一随机数值,范围在0–RAND_MAX间的一个随机数。RAND_MAX定义在stdlib.h,(其值为32767,是一个字符常量),运算的结果是一个不定的数,要看你定义的变量类型,int整型的话就是32767。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。一般用for语句来设置种子的个数。具体见下面的例子。

    一、如何产生不可预见的随机序列

    利用srand((unsigned int)(time(NULL))这种随机数生产器播撒种子,因为每一次运行程序的时间是不同的。

    1. 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;

    2. 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)

    3. 根据需要多次调用rand(),从而不间断地得到新的随机数;

    4. 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。

    下面是0~32767之间的随机数程序:

    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>//使用当前时钟做种子

    void main( void )
    {

    int i;
      srand( (unsigned)time( NULL ) ); //初始化随机数
      for( i = 0; i < 10;i++ ) //打印出10个随机数
        printf( " %d\n", rand() );
    }

    根据上面的程序可以很容易得到0~1之间的随机数:

    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    main( )
    {

    int i;
      srand( (unsigned)time( NULL ) );
      for( i = 0; i < 10;i++ )
      printf( “%3.5f\n”, rand()/32767.0); //小数点后5位
    }

    而产生1~50之间的随机数可以这样写:

    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    main( )
    {

    int i;
      srand( (unsigned)time( NULL ) );
      for( i = 0; i < 10;i++ )
      printf( “%d\n”, rand()%50+1);
    }

    二、列举3个通用的随机数发生器,推荐用第3个
    函数名: rand ()
    功能: 随机数发生器
    用法: void rand(void);
    程序例:

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

    int main(void)
    {
      int i;

    printf(“Ten random numbers from 0 to 99\n\n”);
      for(i=0; i<10; i++)
      printf("%d\n", rand() % 100);
      return 0;
    }

    函数名: random()
    功能: 随机数发生器
    用法: int random(int num);
    程序例:

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

    /* prints a random number in the range 0 to 99 */
    int main(void)
    {
      randomize();
      printf(“Random number in the 0-99 range: %d\n”, random (100));
      return 0;
    }

    函数名: randomize() 这个比较好!
    功 能: 初始化随机数发生器
    用 法: void randomize(void);
    程序例:

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

    int main(void)
    {
      int i;

    randomize();
      printf(“Ten random numbers from 0 to 99\n\n”);
      for(i=0; i<10; i++)
        printf("%d\n", rand() % 100);
      return 0;
    }

    三、如何产生设定范围内的随机数

    由于rand产生的随机数从0到rand_max,而rand_max是一个很大的数,那么如何产生从X~Y的数呢?

    从X到Y,有Y-X+1个数,所以要产生从X到Y的数,只需要这样写:

    k=rand()%(Y-X+1)+X;

    这样,就可以产生你想要的任何范围内的随机数了。

    四、产生不重复的随机数
    1)

    #include <stdlib.h>
    #include <stdio.h>
    #include<stdio.h>
    #include <time.h>
    swap(int *pm,int *pn)
    {
      int temp;
      temp=*pm;
      *pm=*pn;
      *pn=temp;
    }

    int main(void)
    {
      int i, a[151] ;
     
      srand( (unsigned)time( NULL ) ); /定义这个可以产生不同的随机数/
      for(i=1; i<=150; i++)
       {
       a[i]=i;
       printf("%2d",a[i]);
       }

    for(i=151; i>=1; i–)
      {
     
      swap( &a[ i ], &a[rand()%i+1] ); /加一是从一到 i的随机,就不会包含0/
       
      }
      printf("\n") ;
      for(i=1; i<=64; i++)
      printf("%4d",a[i] );
      getch(); /wintc的输出/
    }

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

    int main(void)
    {
      int a[100]={0}; int i,m;
      for(i=1; i<=99; ++i)
      printf("%4d",a[i] );

    srand( (unsigned)time( NULL ) );

    for(i=1; i<=99; i++)
      {
        while(a[m=rand()%100+1]);
        a[m] = i;
      }
      for(i=1; i<=99; ++i)
        printf("%4d",a[i] );

    getch();
    }

    展开全文
  • c语言产生随机数的方法

    千次阅读 2020-12-09 14:48:20
    随机数种子 什么是随机数种子 电脑不是人,不能随便就凭空想象一个数字出来。所谓的随机数,不过是通过一个函数经过计算出来的数字而已。 因此,随机数不过是函数计算出来的值,而一个函数要得到这个值Y,肯定需要一...

    随机数种子

    1. 什么是随机数种子

    电脑无法随便凭空想象一个数字出来。所谓的随机数,只是通过一个函数经过计算出来的数字。因此,随机数不过是函数计算出来的值,而一个函数要得到这个值Y,肯定需要一个输入X,所以X就是那个种子。
    Y = function(x);随机数 = Y,随机数种子 = X。

    rand()%Y+1 
    

    %代表取余运算。

    举个例子 10 % 3 = 1 ,10 % 5 = 0;就是得到余数。余数的范围永远是从 0到被“除数-1 ”,不可能等于被除数。
    所以rand()%Y的意思就是:得到一个随机数,这个随机数的范围是从0到Y-1。再加1就是把这个随机数的范围确定在1到Y之间了。

    2. 如何产生不可预见的随机序列呢

    利用srand((unsigned int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。
    在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这两个函数的工作过程如下:
    首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;
    然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)
    根据需要多次调用rand(),从而不间断地得到新的随机数;
    无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。

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

    2021-05-24 04:29:45
    1 产生随机数的函数为:rand()2 所在的库函数的头文件为#include3rand() ,它返回一个[seed, RAND_MAX(0x7fff))间的随机整数,RAND_MAX=327674 问题来了,如何产生一个指定范围里的随机数呢(0,1):rand()/(float)...
  • 用 c 语言产生随机数C语言中 ,rand) 函数可以用来产生随机数但是这不是真 真意义上的随机数 是一个伪随机数 是根据一个数 我们可以称它 为种子为基准以某个递推公式推算出来的一系数 当这系列数很大 的时候就...
  • 深入理解随机数的产生——用c语言产生随机数rand()
  • 用 c 语言产生随机数C语言中rand)函数可以用来产生随机数但是这不是真 真意义上的随机数 是一个伪随机数 是根据一个数 我们可以称它 为种子为基准以某个递推公式推算出来的一系数 当这系列数很大 的时候 就符合...
  • 因为经常忘记怎么产生随机数,所以写一篇博客记录一下0.0 需要的头函数: #include <time.h> #include <stdlib.h> 生成随机数的语句: srand((int)time(NULL));//设置随机数种子 n=rand()%100+1;/...
  • C语言产生随机数(不重复) 头文件windows.h 借助sleep进行时间上的滞后 #include "stdio.h" #include <stdlib.h> #include <time.h> #include <windows.h> int * random()//Generate random ...
  • c语言产生随机数的函数

    万次阅读 多人点赞 2018-04-15 11:38:01
    1.产生随机数 (1)使用该函数首先应在开头包含头文件stdlib.h(2)在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。(3)rand()函数没有输入参数...
  • 这是用C语言描述的,产生随机数的代码,希望能有所帮助。
  • 满意答案axhbl2013.01.15采纳率:42%等级:2已帮助:29986人"#include #include #include #define SIZE 100void main(){int numbers[SIZE];int i, j;srand(time(NULL));for (i = 0; i < SIZE;...
  • c语言产生随机数函数

    万次阅读 多人点赞 2020-03-21 15:38:17
    c语言产生随机数函数 rand()函数和srand()函数 在头文件 stdlib.h中 rand()函数返回一个从0~32767之间的随机整数,为了生成区间 [m,n] 之间的整数,可以用公式 rand()%(n-m+1)+m。 例区间:[100,200],随机整数的...
  • C语言 产生随机数0-99

    千次阅读 2021-03-12 15:37:05
    要使用到的头文件如下 #include #include #include 下面展示一个例子 #include <time.h> #... if( (num ) || (num > 100) ) { printf(" rand_volume产生音量有错误= %d,应该为 0-99 !" , num) ; } return 0;
  • C语言产生随机数

    2012-08-18 13:50:04
    C语言产生随机数的方法 ……rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,...
  • C语言生成随机数的方法

    千次阅读 2022-03-25 17:56:12
    以上就是今天要讲C语言生成随机数的内容,包含rand、srand和time函数的使用,希望对刚刚阅读本篇博客的你有所帮助。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,928
精华内容 7,971
关键字:

c语言产生随机数