-
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语言产生随机数.doc
2022-07-02 02:19:04C语言产生随机数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))这种随机数生产器播撒种子,因为每一次运行程序的时间是不同的。
-
首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;
-
然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)
-
根据需要多次调用rand(),从而不间断地得到新的随机数;
-
无论什么时候,都可以给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:451 产生随机数的函数为:rand()2 所在的库函数的头文件为#include3rand() ,它返回一个[seed, RAND_MAX(0x7fff))间的随机整数,RAND_MAX=327674 问题来了,如何产生一个指定范围里的随机数呢(0,1):rand()/(float)... -
用C语言产生随机数.pdf
2020-09-03 15:06:51用 c 语言产生随机数 在 C语言中 ,rand) 函数可以用来产生随机数但是这不是真 真意义上的随机数 是一个伪随机数 是根据一个数 我们可以称它 为种子为基准以某个递推公式推算出来的一系数 当这系列数很大 的时候就... -
深入理解随机数的产生——用c语言产生随机数rand().doc
2022-07-03 03:07:30深入理解随机数的产生——用c语言产生随机数rand() -
用c语言产生随机数.docx
2020-12-18 16:30:09用 c 语言产生随机数 在C语言中rand)函数可以用来产生随机数但是这不是真 真意义上的随机数 是一个伪随机数 是根据一个数 我们可以称它 为种子为基准以某个递推公式推算出来的一系数 当这系列数很大 的时候 就符合... -
C语言产生随机数的方法
2020-02-28 21:05:55因为经常忘记怎么产生随机数,所以写一篇博客记录一下0.0 需要的头函数: #include <time.h> #include <stdlib.h> 生成随机数的语句: srand((int)time(NULL));//设置随机数种子 n=rand()%100+1;/... -
C语言产生随机数(不重复)
2021-12-23 21:47:21C语言产生随机数(不重复) 头文件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:011.产生随机数 (1)使用该函数首先应在开头包含头文件stdlib.h(2)在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。(3)rand()函数没有输入参数... -
C语言产生随机数的代码
2009-10-13 10:12:03这是用C语言描述的,产生随机数的代码,希望能有所帮助。 -
用C语言产生随机数。怎么办?
2021-05-25 06:42:56满意答案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:17c语言产生随机数函数 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:04C语言中产生随机数的方法 ……rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,... -
C语言生成随机数的方法
2022-03-25 17:56:12以上就是今天要讲C语言生成随机数的内容,包含rand、srand和time函数的使用,希望对刚刚阅读本篇博客的你有所帮助。