精华内容
下载资源
问答
  • c语言取随机数
    2021-05-19 17:09:50

    匿名用户

    1级

    2009-08-11 回答

    1. 基本函数

    在C语言中取随机数所需要的函数是:

    int rand(void); void srand (unsigned int n);

    rand()函数和srand()函数被声明在头文件stdlib.h中,所以要使用这两个函数必须包含该头文件:

    #include

    2. 使用方法

    rand()函数返回0到RAND_MAX之间的伪随机数(pseudorandom)。RAND_MAX常量被定义在stdlib.h头文件中。其值等于32767,或者更大。

    srand()函数使用自变量n作为种子,用来初始化随机数产生器。只要把相同的种子传入srand(),然后调用rand()时,就会产生相同的随机数序列。因此,我们可以把时间作为srand()函数的种子,就可以避免重复的发生。如果,调用rand()之前没有先调用srand(),就和事先调用srand(1)所产生的结果一样。

    举个例子,假设我们要取得0~10之间的随机整数(不含10本身):

    /* 例1:不指定种子的值 */

    for (int i=0; i<10; i++) { printf("%d ", rand()%10); }

    每次运行都将输出:1 7 4 0 9 4 8 8 2 4

    /* 例2:指定种子的值为1 */

    srand(1); for (int i=0; i<10; i++) { printf("%d ", rand()%10); }

    每次运行都将输出:1 7 4 0 9 4 8 8 2 4

    例2的输出结果与例1是完全一样的。

    /* 例3:指定种子的值为8 */ srand(8); for (int i=0; i<10; i++) { printf("%d ", rand()%10); }

    每次运行都将输出:4 0 1 3 5 3 7 7 1 5

    该程序取得的随机值也是在[0,10)之间,与srand(1)所取得的值不同,但是每次运行程序的结果都相同。

    /* 例4:指定种子值为现在的时间 */ srand((unsigned)time(NULL)); for (int i=0; i<10; i++) { printf("%d ", rand()%10); }

    该程序每次运行结果都不一样,因为每次启动程序的时间都不同。另外需要注意的是,使用time()函数前必须包含头文件time.h。

    3. 注意事项

    求一定范围内的随机数。

    如要取[0,10)之间的随机整数,需将rand()的返回值与10求模。

    randnumber = rand() % 10;

    那么,如果取的值不是从0开始呢?你只需要记住一个通用的公式。

    要取[a,b)之间的随机整数(包括a,但不包括b),使用:

    (rand() % (b - a)) + a

    伪随机浮点数。

    要取得0~1之间的浮点数,可以用:

    rand() / (double)(RAND_MAX)

    如果想取更大范围的随机浮点数,比如0~100,可以采用如下方法:

    rand() /((double)(RAND_MAX)/100) 其他情况,以此类推,这里不作详细说明。

    更多相关内容
  • 代码如下://以空间换时间/*arr :数组名n :给定的数组长度转移数组中的数据*/ void diffarr(int arr[],int n){ int sn=n,index,*ptr=arr; int *pfrom=new int[sn]; for(int i=0;i<sn;i++) *(pfrom+i) =i+1 ;...
  • C语言产生随机数(不重复) 头文件windows.h 借助sleep进行时间上的滞后 #include "stdio.h" #include <stdlib.h> #include <time.h> #include <windows.h> int * random()//Generate random ...

    C语言产生随机数(不重复)
    头文件windows.h 借助sleep进行时间上的滞后

    #include "stdio.h"
    #include <stdlib.h> 
    #include <time.h> 
    #include <windows.h>
    int * random()//Generate random numbers 1 to 20
    {
    	static int r[3];
    	srand((unsigned int)time(NULL));//修改种子
    	for (int i = 0; i < 3; i++)		
    	{	
    		r[i]=rand()%(20) + 1;//设置范围  1-20
    		Sleep(500);	// windows.h
    	}
    	return r;
    }
    
    int main(int argc, char const *argv[])
    {
    	int *p;// build a pointer
    	p=random();
    	for (int i = 0; i < 3; ++i)
    	{
    		printf("%d\n",*(p+i));//priint random number
    	}
    	return 0;
    }
    
    展开全文
  • C语言中生成随机数函数

    千次阅读 多人点赞 2021-10-17 14:36:37
    本文主要详细介绍如何在C语言中生成随机数。 一、产生随机数 我们先看一个示例:产生一个随机数并在屏幕上输出 #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { srand(...


    前言

    本文主要详细介绍如何在C语言中生成随机数。


    一、产生随机数

    我们先看一个示例:产生一个随机数并在屏幕上输出

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {
    	srand((unsigned int)time(NULL));
    	int ret=rand() % 10;
    	printf("产生一个随机数:%d\n", ret);
    	return 0;
    }
    
    

    此代码的运行结果:

    在这里插入图片描述


    二、具体分析

    由代码可知,随机数的产生主要依赖于其中标红的两行代码,以下是对这两行代码的具体分析。
    在这里插入图片描述

    1.rand函数

    (1)范围

    在C语言中我们需要用 rand() 函数来产生随机数。
    我们登录 https://www.cplusplus.com/ 网站进行查询(这里提到的网站是官方C++网站,里面详细介绍了相关语法函数等)
    在这里插入图片描述
    在Search中输入我们要查询的函数 rand,点击Go
    以下是跳转页面,此处截取了一部分。
    在这里插入图片描述
    由此我们大概了解了rand()函数的相关信息,其产生随机数的范围为
    0——RAND_MAX
    这里的RAND_MAX 是一个值,我们可以将其拷贝至VS编译器中,选中右键转到定义:

    在这里插入图片描述
    我们可以看到,其值为0x7fff
    在这里插入图片描述
    这里的0x7fff十六进制,转化为二进制为:32767
    因此:rand()函数所产生随机数的范围:0—32767

    (2)对应头文件

    在C语言中rand()函数所对应的头文件为:stdlib.h


    2.srand函数

    假使我们在编写程序的过程中只采用了 rand() 函数来进行随机数的获取,那么我们会发现一个问题:
    运行程序,每次产生的随机数相等(也就是说,随机数不随机)

    在这里插入图片描述
    这是因为在使用 rand() 函数时需要用 srand() 函数设置随机数种子。
    在这里插入图片描述

    同样,我们可在该网站继续查找 srand () 函数
    在这里插入图片描述

    我们跳转到time () 函数

    在这里插入图片描述
    在使用 time() 函数时我们通常给的值 NULL(空指针)
    且在使用时需要调用其所对应的头文件 time.h

    因此,最终使用 srand() 函数需要:

    在这里插入图片描述


    3.整合

    在C语言中产生随机数:

    在这里插入图片描述

    总结


    以上就是本文的全部内容,感谢大家观看。
    展开全文
  • C语言 获取随机数

    2021-05-16 13:47:48
    本文讲述了在C语言中如何获取随机数。## rand()`rand()`函数可以用来产生伪随机数,它根据一个基准(种子)以某个递推公式推算出随机数。当使用rand()产生的一系列数符合正态公布时,就相当于产生了随机数。计算机正常...

    >本文讲述了在C语言中如何获取随机数。

    ## rand()

    `rand()`函数可以用来产生伪随机数,它根据一个基准(种子)以某个递推公式推算出随机数。当使用rand()产生的一系列数符合正态公布时,就相当于产生了随机数。计算机正常开机后,种子的值是默认固定的,为1。

    /* @brief 随机数发生器

    * @return 返回一个伪随机数

    * @header stdlib.h

    */

    int rand(void)

    `rand()`返回随机数值的范围在`0`至`MAX_INT`(定义在limits.h)间。每一个数被选择的概率是相同的。

    ## srand()

    `rand()`产生的是伪随机数字,程序每次执行时产生的序列是相同的。若要每一次运行程序都产生不同的序列,则需用函数`srand()`初始化随机数种子。

    /* @brief 初始化随机数发生器

    * @param 种子

    * @header stdlib.h

    */

    void srand(unsigned int seed)

    `srand()`用来设置`rand()`产生随机数时的随机数种子。参数seed必须是个整数,如果每次seed都设相同值,`rand()`所产生的随机数序列每次就会一样。

    ### 选择随机数种子

    #### 使用当前时钟作为种子

    可以利用`srand((unsigned int)(time(NULL))`的方法,使用当前时钟作为种子传递给`srand()`。

    ## 产生随机数的用法

    1. 给srand()提供一个种子;

    2. 调用rand(),返回一个随机数(在0到MAX_INT之间);

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

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

    ## 产生一定范围的随机数

    |随机数区间|生成表达式|

    |--|

    |[a,b)|(rand() % (b-a))+ a|

    |[a,b]|(rand() % (b-a+1))+ a|

    |(a,b]|(rand() % (b-a)) + a + 1|

    上面几个表达式都是参照通用公式`a + rand() % n `生成的。其中的a是起始值,n是整数的范围。

    ## 生成[0, n-1]之间的k个不同随机数

    怎么快速生成[0, n-1]之间的k个不同的随机顺序的随机整数?按照直觉,我们会通过不停地调用`rand() % n`来生成新的随机数,直到生成够k个为止来达成目的,这期间还用到了某种容器和搜索算法。然而,这种思路导出的代码复杂又低效。

    实际上,有一个优美的实现可以达到要求:

    ```c

    /* 生成[0, n-1]之间的k个不同随机数 */

    void foo(int* a, int n, int k)

    {

    int i;

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

    a[i] = i;

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

    swap(&a[i], &a[randint(i, n-1)]);

    }

    ```

    其中,`swap(int*, int*)`交换两个`int*`指针指向的内存单元的值,`randint(min, max)`生成[min, max]之间的随机数。

    展开全文
  • 的是系统时间,也就是距离1970.1.1午夜有多少秒。 而for循环每循环一次时间远远小于1秒,这就导致了srand((unsigned)time(NULL))产生的种子并没有改变。 那么,相同的随机数种子所产生的随机数肯定是一样的了。 ...
  • C语言——获取随机数

    千次阅读 2021-04-19 16:42:22
    C语言获取随机数 前言 方法 代码 总结 前言 在我们的学习生活中,难免会获取随机数来满足一些需要。下面就讲述一下获取随机数的方法。 方法 导入头文件 添加随机数种子 获取随机数 随机数种子:srand((unsigned int)...
  • C语言随机数的获取与妙用

    热门讨论 2021-08-05 16:19:37
    想要获取随机数,肯定需要利用函数,rand函数在C语言中的作用就是产生一个随机数。 通过cplusplus网站查找,可以发现调用本函数时,不需要参数即可返回随机数,且所产生随机数的范围是0~32767。且本函数的调用...
  • 先用srand()来形成随机种子,再用rand()来形成随机数.每次srand的参数最好不同,所以时间是一个常用的参数.比如:int r;srand(time(NULL));r=rand();获得1-100之间的数:r=rand()%100+1;头文件:#include 2.我以前在linux...
  • C语言产生随机数重要用到rand函数、srand函数、及宏RAND_MAX(32767),它们均在stdlib.h中进行了声明。int rand(void);//生成一个随机数voidsrand(unsigned int seed); //为rand设置“种子”的值srand()就是给rand...
  • 关于C语言取随机数

    2018-04-12 16:15:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • C语言产生随机数

    2019-09-26 09:38:52
    rand产生随机数 #include"stdio.h" #include"stdlib.h" voidmain() { inti; for(i=0;i<5;i++) printf("%d",rand()%100); printf("\n"); } srand设置随机事件的种子函数 ...
  • 匿名用户1级2013-11-24 回答rand()函数可以用来产生随机数e799bee5baa6e79fa5e98193e4b893e5b19e31333332643334,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种了,为基准以某个...
  • C语言的小白可能不懂怎样获取随机数,网上可能不全面,我给大家讲一下用rand和srand获取随机数(某一范围的随机整数以及小数)。 这是我第一篇文章,希望多多鼓励…… 首先,使用这两个函数需要包含头文件<stdlib...
  • C语言生成随机数

    2021-05-22 01:06:34
    两个步骤:设置种子和返回随机数值。所需头文件:stdlib.h。如果种子欲由时间生成,则还需time...为了防止随机数每次重复常常使用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:00:00 GMT, J...
  • C语言使用随机数

    2022-03-09 16:53:05
    C语言如何使用随机数? 通常情况下,使用最多的方法的就是使用rand函数随机生成伪随机数来完成随机数的生成工作。注意这里的伪随机数并非是假的! 只不过是计算机按自己的一套理论生成,并不是”完全理想”状态下的...
  • C语言取一个随机数的代码。取随机数.cpp
  • C语言 生成不重复随机数

    千次阅读 2021-09-14 16:53:59
    #include <stdio.h> #include <stdlib.h> #include <time.h> int main() ... int list[10], j, ...//设置随机数种子。 for(int i = 0; i < 10; i ++) { while(1) { randTmp = rand()%100; //
  • srand()函数使用自变量n作为种子,用来初始化随机数产生器。只要把相同的种子传入srand(),然后调用rand()时,就会产生相同的随机数序列。因此,我们可以把时间作为srand()函数的种子,就可以避免重复的发...
  • C语言随机数函数( rand() )的使用方法

    万次阅读 多人点赞 2018-04-25 19:49:18
    在程序设计中,难免会使用到随机值函数,其原理与语法大多类似,接下来以C语言为例介绍其随机值函数 rand() 用法。 原理 引用百度百科,首先,需要包含头文件: #include &amp;lt;stdlib.h&amp;gt; ...
  • C语言获取随机数

    千次阅读 多人点赞 2018-09-09 16:21:57
    可能大家在编程的时候需要电脑来获取一些随机的反应,这个时候我们可以使用随机数,比较常见的是 rand() 函数,它可以随机的产生 0 ~ rand_max 的随机数。rand_max 是一个很大的数字,具体关系到IDE和数据类型,我们...
  • 或者预先写好一个随机数表,然后进行数据。也是可以的。KEIL里面产生随机数的函数确实是rand(),但头文件是stdlib.h,不是time.h。C语言提供了一些库函数来实现随机数的产生。C语言中有三个通用的随...
  • 在用单片机开发的产品中有很多的产品都是要插入随机生成效果的,所以对于单片机来说单片机中的C语言随机生成也是十分的重要的,下面粤嵌科技就来给大家讲解下嵌入式C语言中的随机数是怎么生成的。单片机生成随机数的...
  • 刚刚学习c语言的人可能对他的随机数获取方式还不是很了解,下面我就为大家介绍下他的方法吧。 1)标准库cstdlib(被包含于iostream中)提供两个帮助生成伪随机数的函数: 函数一:int rand(void);从srand (seed)中指定...
  • C语言如何设计随机数

    千次阅读 2020-02-05 11:51:19
    如果你想学会设计0~100之间这样简单的随机整数的话我想你来对了地方 ...c语言随机函数是伪随机数并不能真正的随机 在头文件加上 #include<time.h> 再在主函数里加上 srand(time(0)) 就可...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,500
精华内容 5,000
关键字:

c语言取随机数