用c语言产生随机数rand()
C语言使用rand()函数随机生成数,让用户猜数字游戏简单小程序。使用if,dowhile

10
11 printf("我已经想好一个1-100之间的数了\n");
12 do{
13 printf("请你猜这个数:\n");
14 scanf("%d",&a);
15 count++;
16 if(a>number){
17
printf("你输入的数大了\n");
18 }else if(a<number){
19
printf("你数入的数小了\n");
20 }
21
22 }while(a!=number);
23 printf("太棒了,你用了%d次就猜对了答案 \n",count);
24 return 0;
25 }
运行结果
请求出错错误代码400请尝试刷新页面重试
C语言使用 rand()函数随机生成数,让用户猜数字游戏简单小 程序。使用 if, dowhile
使用随机数生成一个 1-100的随机数,让用户输入数字去猜测此数并且记录猜测的次 数。
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <time.h>
4
5 int main(){
6 srand(time(0));
//先设置种子
7 int number=rand()%100+1; //然后产生随机数 +1是1-100之间的数 如果用户输入的是0则加1
8 int count=0;
//定义计数变量
9 int a=0;
rand()的用法

rand()函数是产生随机数的一个随机函数。
C语言里还有srand()函数等。
详述rand()(1)使用该函数首先应在开头包含头文件stdlib.h #include<stdlib.h>(2)在标准的C库中函数rand()可以生成0~RAND_MAX 之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。
(3)rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:printf("Random numbers are: %i %i\n",rand(),rand());(4)因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机,有时候也叫伪随机数。
(5)为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子。
函数srand()(来自stdlib.h)可以为随机数生成器播散种子。
只要种子不同rand()函数就会产生不同的随机数序列。
srand()称为随机数生成器的初始化器。
例子文件名:rand_srand.c /* This program generates and prints ten random integers between 1 and RAND_MAX*/#include <stdio.h>#include <stdlib.h>int main(){ unsigned int seed; /*申明初始化器的种子,注意是usigned int 型的*/int k;printf("Enter a positive integer seed value: \n"); scanf("%u",&seed);srand(seed);printf("Random Numbers are:\n");for(k = 1; k <= 10; k++){ printf("%i",rand()); printf("\n"); } return 0; }当提供的种子相同时,随机数序列也是相同的。
用c语言产生随机数rand()

用c语言产生随机数rand()在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。
可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,所以说,random函数不能在gcc,vc等编译器下编译通过。
rand()会返回一随机数值,范围在0至RAND_MAX 间。
返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,(其值至少为32767)我运算的结果是一个不定的数,要看你定义的变量类型,int整形的话就是32767。
在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。
一般用for语句来设置种子的个数。
具体见下面的例子。
一如何产生不可预见的随机序列呢利用srand((unsigned int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。
在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。
它们就是rand()和srand()函数。
这二个函数的工作过程如下:1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)3) 根据需要多次调用rand(),从而不间断地得到新的随机数;4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。
c语言rand的用法

c语言rand的用法C语言中rand用于产生随机数,与他相关的是srand ,下面将详细说明c语言rand的用法。
rand(产生随机数)表头文件: #include定义函数 :int rand(void)函数说明 :因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。
在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。
rand ()产生的是假随机数字,每次执行时是相同的。
若要不同,以不同的值来初始化它.初始化的函数就是srand()。
返回值:返回0至RAND_MAX之间的随机整数值,RAND_MAX的范围最少是在32767之间(int),即双字节(16位数)。
若用unsigned int 双字节是65535,四字节是4294967295的整数范围。
0~RAND_MAX每个数字被选中的机率是相同的。
rand的用法范例1:/* 产生介于1 到10 间的随机数值,此范例未设随机数种子,完整的随机数产生请参考srand()*/#includemain(){int i,j;for(i=0;i<10;i++){j=1+(int)(10.0*rand()/(RAND_MAX+1.0));printf("%d ",j);}}执行:9 4 8 8 10 2 4 8 3 69 4 8 8 10 2 4 8 3 6 //再次执行仍然产生相同的随机数srand(设置随机数种子)表头文件:#include定义函数:void srand (unsigned int seed);函数说明:srand()用来设置rand()产生随机数时的随机数种子。
参数seed 必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。
随机函数c语言用法

随机函数c语言用法
随机函数在C语言中是非常常用的,它可以用来生成随机数,为程序添加一些随机性和变化性。
在C语言中,我们可以使用stdlib.h头文件中的rand()函数来生成随机数。
下面是一个简单的例子:
c.
#include <stdio.h>。
#include <stdlib.h>。
#include <time.h>。
int main() {。
int i;
// 使用当前时间作为随机数种子。
srand((unsigned)time(NULL));
// 生成10个随机数并打印出来。
for(i = 0; i < 10; i++) {。
printf("%d\n", rand());
}。
return 0;
}。
在这个例子中,我们首先包含了stdio.h、stdlib.h和time.h 这三个头文件,然后在main函数中使用srand()函数设置了随机数种子,这样可以确保每次运行程序时生成的随机数是不同的。
接着使用for循环生成了10个随机数并打印出来。
除了生成简单的随机数外,我们还可以使用rand()函数生成特定范围内的随机数,例如生成1到100之间的随机数可以使用rand() % 100 + 1。
总之,随机函数在C语言中的用法非常灵活,可以为程序添加一些随机性,使得程序更加有趣和具有挑战性。
C语言中的随机数

C语言中的随机数作者:王璐随机数,顾名思义就是随机产生的、无规则的数。
在编程中,有时我们不想手动从键盘输入数据,而想让电脑自动产生一些数据供我们使用(例如生成100个两位数),就要用到随机数。
随机数的生成方法很简单,在C语言中,我们通过调用随机函数rand()来产生随机数。
rand函数是C语言的标准库函数,和我们常用的输入输出函数(scanf和printf)一样可以在程序中直接调用。
rand函数的用法如下:首先在程序开头预处理命令部分加上#include<stdlib.h>,其中<stdlib.h>是C中的标准库头文件,我们在用rand函数时需要用到这个头文件 [注1]。
它的作用是为了对rand()函数进行引用性声明,以便在下面的程序中使用它。
这和我们在用到scanf和printf函数时需要在程序开头写上#include<stdio.h>(标准输入/输出头文件)是一样的。
随机函数rand使用的格式为:A=rand()%x+y;这条语句的意思是,自动产生一个以y为下限,以x+y为上限的随机数,并把值赋给A。
即A为y到x+y之间的随机数。
例如,有语句:int a;a=rand()%89+10;执行该语句后,a即可得到一个10~100之间的整数赋值。
注意区别于:a=rand()%100;执行这条语句,a可能取值的上限同样为100,但下限为0,a可以取到10以下的数。
相当于:a=rand()%100+0;下面我们来看一个完整的例子:[eg.1]输入10个两位数,并把他们的和打印出来。
1.从键盘输入数据:#include<stdio.h>void main(){int a[10],sum=0;int i;printf("请输入10个2位数:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);sum=sum+a[i];}printf("\n");printf("这10个数的和是:%d \n",sum);}运行结果:2.使用随机数:#include<stdio.h>#include<stdlib.h>void main(){int a[10],sum=0;int i;printf("系统自动生成随机数:\n");for(i=0;i<10;i++){a[i]=rand()%89+10; /* a从10-99之间取值,即a是两位数 */printf("%d ",a[i]);sum=sum+a[i];}printf("\n");printf("这10个两位数的和是:%d \n",sum);}运行结果:经运行比较后可以感觉到,使用随机数可以简化程序运行,方便人的工作。
产生随机数(rand()函数和srand()函数)

产⽣随机数(rand()函数和srand()函数) 有时候,我们需要随机产⽣⼀个在某范围的数,C/C++提供了⼀个库函数rand()来产⽣随机数。
函数原型:int rand(void);功能:返回⼀个[0,RAND_MAX]间的随机整数。
其中RAND_MAX是定义在stdlib.h头⽂件中的⼀个常量。
注意: rand()函数包含在头⽂件stdlib.h中,要使⽤它必须⽤#include<stdlib.h>引⼊该头⽂件; 计算机实际上并没有真正做到产⽣⼀个随机数,只是在⼀串预先定义好的数据中选择⼀个返回给函数。
那么,如何得到⼀个在a到b的整数呢?有两种⽅法:法⼀:公式:a+rand()%(b-a+1)⽰例:n=1000+rand()%9000;//随机⽣成⼀个四位数返回给n。
a+rand()%(b-a+1),四位数即1000-9999,此时a=1000,b=9999法⼆:公式:a+rand()*(b-a+1)/RAND_MAX⽰例:n=1000+rand()*9000/RAND_MAX;//随机⽣成⼀个四位数返回给n。
a+rand()*(b-a+1)/RAND_MAX,四位数即1000-9999,此时a=1000,b=9999 当要产⽣多个随机数时,rand()会重复调⽤产⽣相同的数字序列。
如果想要每次执⾏产⽣的随机数不同,就需要进⾏随机初始化。
因此引⼊srand()函数。
函数原型:void srand(unsigned seed);功能:根据随机数⽣成器的种⼦seed的值初始化随机数。
我们当然可以⽤数组和循环来设置种⼦的值,那么有没有什么我们可以直接利⽤的⼀直变化的值呢? 当然有,时间就是。
我们可以借助time.h头⽂件中的time(NULL)返回机器当前的时间。
函数原型:time_t time(time_t *t)功能:返回⾃纪元 Epoch(1970-01-01 00:00:00 UTC)起经过的时间。
用C语言产生随机数1

} 而产生 1~100 之间的随机数可以这样写:
#include <stdlib.h> #include <stdio.h> #include <time.h> main( ) {int i; srand( (unsigned)time( NULL ) );
int a[100]={0}; int i,m; for(i=1; i<=99; ++i)
printf("%4d",a[i] );
srand( (unsigned)time( NULL ) );
or(i=1; i<=99; i++)
{
while(a[m=rand()%100+1]);
a[m] = i;
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; } 在《计算机常用算法》中有介绍随机数的生成算法 三 如何产生设定范围内的随机数
for( i = 0; i < 10;i++ ) printf( "%d\n", rand()%100+1);
} 二,三个通用的随机数发生器,推荐用第三个 函数名: rand 功 能: 随机数发生器 用 法: void rand(void);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用c语言产生随机数rand()
在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。
可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,所以说,random函数不能在gcc,vc等编译器下编译通过。
rand()会返回一随机数值,范围在0至RAND_MAX 间。
返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,(其值至少为32767)我运算的结果是一个不定的数,要看你定义的变量类型,int整形的话就是32767。
在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。
一般用for语句来设置种子的个数。
具体见下面的例子。
一如何产生不可预见的随机序列呢
利用srand((unsigned int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。
在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。
它们就是rand()和srand()函数。
这二个函数的工作过程如下:
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( "%5.2f\n", rand()/32767.0);
}
而产生1~100之间的随机数可以这样写:
#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()%100+1);
}
二,三个通用的随机数发生器,推荐用第三个
函数名: 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[513];
/*int *pa,*pb;*/
srand( (unsigned)time( NULL ) ); /*定义这个可以产生不同的随机数*/
for(i=1; i<=512; i++){a[i]=i;printf("%4d",a[i]);}
for(i=512; i>=1; i--)
{
/* pa=&a[i]; pb=&a[rand()%i+1];*/
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();
}。