精华内容
下载资源
问答
  • c语言rand函数

    千次阅读 2014-11-03 22:03:02
    #include #include main() { int i,j; for(i=0;i;i++) { j=(10*rand());printf("%d ",j); } } //其实rand一点都不随机 //410 184670 63340 265000 19
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    main()
    {
    	int i,j;
    	for(i=0;i<5;i++)
    	{
    		j=(10*rand());printf("%d ",j);
    	}
    }
    //其实rand一点都不随机
    //一直都是410 184670 63340 265000 191690 Press any key to continue
    
    /*
    函数说明 :
    因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,
    所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。
    在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,
    rand()在调用时会自动设随机数种子为1。rand ()产生的是假随机数字,每次执行时是相同的。
    若要不同,以不同的值来初始化它.初始化的函数就是srand()。
    
     srand((unsigned)time(NULL));/*播种子*/
    */
    

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

    万次阅读 多人点赞 2018-06-14 16:17:43
    在实际的项目中,有时候需要生成一个随机数,在C语言中随机数的生成可以通过使用rand函数来实现。 rand函数包含在头文件stdlib.h里,因此使用rand函数需要声明包含stdlib.h。 #include&lt;stdlib.h&gt; ...

    在实际的项目中,有时候需要生成一个随机数,在C语言中随机数的生成可以通过使用rand函数来实现。
    rand函数包含在头文件stdlib.h里,因此使用rand函数需要声明包含stdlib.h。

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

    但是,这里就出现了一个问题。
    这里写图片描述
    这里写图片描述

    显然,两次产生的随机数是完全相同的。因此可以这样修改

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

    在产生随机数之前调用一下srand就可以了。

    同时,如果限定一下产生随机数的范围的话,可以这样产生10以内的随机数

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

    还可以这样产生5到10之间的随机数

    #include<stdlib.h>
    #include<stdio.h>
    #include<time.h>
    
    int main(){
    	int i,j;
    	srand((unsigned) (time(NULL)));
    	for(i = 0; i <10;i++){
    		do{
    			j = rand()%10;
    		}while(j < 5 || j >10);
    		printf("%d\n",j);
    	}
    	return 0;
    }
    
    展开全文
  • 说到rand函数,大家是不是会和EXCEL中的rand函数混淆,当小编第一次接触的时候也以为是EXCEL的函数,本文是爱站技术频道小编为大家带来的详解C语言生成随机数rand函数的用法,一起来看看吧!函数rand()是真正的...

    说到rand函数,大家是不是会和EXCEL中的rand函数混淆,当小编第一次接触的时候也以为是EXCEL的函数,本文是爱站技术频道小编为大家带来的详解C语言生成随机数rand函数的用法,一起来看看吧!

    函数rand()是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。而使用同种子相同的数调用 srand()会导致相同的随机数序列被生成。

    srand((unsigned)time(NULL))则使用系统定时/计数器的值做为随机种子。每个种子对应一组根据算法预先生成的随机数,所以,在相同的平台环境下,不同时间产生的随机数会是不同的,相应的,若将srand(unsigned)time(NULL)改为srand(TP)(TP为任一常量),则无论何时运行、运行多少次得到的“随机数”都会是一组固定的序列,因此srand生成的随机数是伪随机数。

    库函数中系统提供了两个函数用于产生随机数:srand()和rand()。 原型为:

    函数一:int rand(void);

    从srand (seed)中指定的seed开始,返回一个[0, RAND_MAX(0x7fff)]间的随机整数。

    函数二: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日零时零分零秒到目前为止所经过的时间,单位为秒。

    生成随机数函数rand用法,如代码所示:

    #include "stdafx.h"

    #include

    #include

    int _tmain(int argc, _TCHAR* argv[])

    {

    // 初始化随机数种子

    // time函数返回从1970年1月1日零时零分零秒到目前为止所经过的时间,单位为秒

    srand((int)time(NULL));

    int j;

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

    j = (rand() * 10) / RAND_MAX + 1; // 生成1~10之间的随机数

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

    }

    unsigned start = (rand() * 1000)/ RAND_MAX + 15550; // 生成15550~16549之间的随机数

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

    start &= ~1; // 把start变为偶数,如果是奇数,则start变为start - 1的偶数

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

    getchar();

    return 0;

    }

    运行结果如下所示:

    j = 9

    j = 6

    j = 7

    j = 8

    j = 1

    j = 5

    j = 3

    j = 1

    j = 10

    j = 9

    start = 16185

    start = 16184

    本文是爱站技术频道小编给大家分享的详解C语言生成随机数rand函数的用法,大家在学习的时候可千万别混淆了,感兴趣的朋友可以继续留意爱站技术频道的推荐。

    展开全文
  • C语言rand函数生成随机数详解和示例

    千次阅读 2020-04-17 12:28:38
    在C/C++程序开发中,会经常用到随机数这个功能,例如编写游戏类(纸牌)的程序时就需要... 头文件中的 srand和rand 函数来生成随机数。 void srand(unsigned int seed); // 随机数生成器的初始化函数 int rand(); //...


    在C/C++程序开发中,会经常用到随机数这个功能,例如编写游戏类(纸牌)的程序时就需要用到随机数。

    1、生成随机数

    在C语言中,我们使用 <stdlib.h> 头文件中的 srand和rand 函数来生成随机数。

    void srand(unsigned int seed);   // 随机数生成器的初始化函数
    int  rand();                        // 获一个取随机数
    

    srand函数初始化随机数发生器(俗称种子),在实际开发中,我们可以用时间作为参数,只要每次播种的时间不同,那么生成的种子就不同,最终的随机数也就不同,通常我们采用
    <time.h> 头文件中的 time 函数即可得到一个精确到秒的时间作为种子。

    示例(book63.c)

    /*
     * 程序名:book63.c,此程序用于演示随机数
     * 作者:C语言技术网(www.freecplus.net) 日期:20190525
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main()
    {
      int ii;
    
      srand(time(0));  // 播下随机种子
    
      for (ii=0;ii<5;ii++)  // 生成5个随机数
      {
        printf("%d ", rand());  // 获取随机数
      }
    
      printf("\n");
    }
    

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

    2、生成一定范围随机数

    在实际开发中,需求往往是一定范围内的随机数,对于产生一定范围的随机数,就需要使用一定的技巧,常用的方法是取模运算(取余数),再做一个加法运算:

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

    如果要规定上下限:

      int a = rand() % 51 + 100;   // 产生100~150的随机数
    

    取模即取余数,rand()%51+100,rand()%51是产生 0~50 的随机数,后面+100保证 a
    最小只能是 100,最大就是 50+100=150。

    示例(book64.c)

    /*
     * 程序名:book64.c,此程序用于演示生成指定范围内的随机数
     * 作者:C语言技术网(www.freecplus.net) 日期:20190525
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main()
    {
      int ii;
    
      srand(time(0));  // 播下随机种子。
    
      for (ii=1;ii<=100;ii++)  // 生成100个随机数。
      {
        printf("%03d ",rand()%51 + 100);  // 获取100-150之间的随机数。
    
        if (ii%20==0) printf("\n");  // 每20个数换行。
      }
    
      printf("\n");
    }
    

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

    注意,rand函数生成的随机数是不会重复的,但取模运算后的结果会重复,在实际开发中,需要编写额外的代码排除重复的数据。

    3、获取视频教程

    百万年薪程序员录制,《C/C++高性能服务开发基础》视频教程已在CSDN学院发布,优惠价12元,地址如下:
    https://edu.csdn.net/course/play/29402

    4、版权声明

    C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。

    来源:C语言技术网(www.freecplus.net

    作者:码农有道

    如果这篇文章对您有帮助,请点赞支持,或在您的博客中转发此文,让更多的人可以看到它,谢谢!!!

    展开全文
  • 与随机数有关的两个函数,srand() 和 rand(),这两个函数都包含"stdlib.h"头文件里 srand()函数是随机数发生器,使得每轮产生的随机数列都不相同。 rand()函数产生随机数,返回一个[0,RAND_ MAX]间的随机整数。 ...
  • C语言 rand函数(随机)

    千次阅读 2018-04-12 13:14:03
    rand函数不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。而使用同种子相同的数调用 rand()会导致相同的随机数...
  • 函数名: 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");...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼关于C语言实现猜拳游戏的问题#include #include #include int main(){char gamer; // 玩家出拳int computer; // 电脑出拳int result; // 比赛结果// 为了避免玩一次游戏...
  • 请教rand()函数遇到的小问题#include#include#include/*用到了time函数,所以要有这个头文件*/#defineMAX10intmain(void){intnumber[MAX]={0};inti;for(i=0;i{srand((unsigned)time(NULL));/*播种子*/number[i]=rand...
  • C/C++产生指定范围和不定... 不指定范围产生随机数用到函数rand(),函数原型为int rand(),无参数。此时会产生一个介于0~RAND_MAX间的整数。RAND_MAX的大小可以查看,在include文件夹(linux在usr目录、windows在安...
  • 相信有很多新手跟我一样不会使用rand函数,不知道该如何确定参数,网上的答案也有点繁琐,这是我确定参数的方法,希望对新手有所帮助吧,直接上代码!! int code = rand() % a + b;//这里的a就是生成的最大数,而...
  • 我们使用C语言rand函数,生成的也是伪随机数。 c语言rand函数的使用 1、写入头文件 #include <stdlib> #include <stdio> #include 2、变量的定义 void main( void ) { int i,k; 3、srand( (unsigned)time( ...
  • c语言产生随机数rand()在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数。C语言rand()%m是啥...
  • C语言rand()函数解析

    2021-05-16 17:04:05
    C语言rand()函数位于<stdlib.h>。该函数可以生成一个取值为0~32767的伪随机数。先看一下函数的实现。 unsigned long int next = 1; int rand(void) { next = next * 1103515245 + 12345; return (...
  • C语言rand()函数使用

    2020-11-03 12:18:04
    rand函数的使用: 1.生成一个0~1之间的小数 方法一:利用两个数相除 #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 100//精度是小数点后两位 int main(){ srand(...
  • C语言rand函数

    2016-07-02 10:52:39
    rand函数功能为获取一个伪随机数(伪随机数的概念下面会有介绍)。 一、函数名:  rand(); 二、声明: int rand(); 三、所在头文件: stdlib.h 四、功能: 返回一个伪随机数。之所以说是伪随机数,是因为在没有...
  • C语言使用rand()%一个值就可以实现生成一个伪随机数供我们使用,那么rand函数是如何实现的呢?我们自己可不可以编辑出来?其实是可以的,rand作为伪随机数发生器产生的是一个伪随机数,一般的用途能够满足。 要想...
  • 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语言rand()函数

    2011-06-05 11:19:00
    rand(产生随机数)表头文件: #include定义函数 :int rand(void)函数说明 :因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一...
  • C语言(rand函数)

    2010-07-07 23:37:00
    C语言(rand函数) (2006-09-24 20:41:59) 转载 srand()就是给rand()提供种子seed 1,先看一个例子#include &lt;iostream&gt;#include &lt;stdlib.h&gt;#include &lt;...
  • C语言rand函数的运用以及说明

    千次阅读 2020-08-24 23:20:05
    rand()函数的使用: //C语言中生成某区间,模除+加法: // rand()%m+n: [n,n+m] 从m开始到m+n的m个数字范围内 // rand()%m: [0,m] 从0到m-1的m个数字范围内 // rand()%10 再除10 : 生成0到9的随机数,除10后,成为生成0到...
  • c语言 rand() 随机函数

    2018-04-12 19:23:00
    c的标准函数库提供一随机数生成器rand(定义在stdlib.h),能返回0~RAND_MAX之间均匀分布的伪随机整数(RAND_MAX至少为32767,一般都默认为32767)。 用rand()随机生成在[x,y]内的整数 int k; k=x+rand()%(y...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,412
精华内容 564
关键字:

c语言rand函数

c语言 订阅