-
2021-05-22 01:06:34
两个步骤:设置种子和返回随机数值。所需头文件:stdlib.h。如果种子欲由时间生成,则还需time.h。
设置种子的函数:srand。用法:void srand ( unsigned int seed )。如果使用相同的种子后面的 rand() 函数会出现一样的随机数。为了防止随机数每次重复常常使用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:00:00 GMT, January 1, 1970 到现在所持续的秒数,然后将 time_t型数据转化为(unsigned)型再传给 srand 函数,即: srand((unsigned) time(&t)) 。还有一个经常用法,即: srand((unsigned) time(NULL)); 直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的 t 数据。srand((int)getpid()); 使用程序的ID (getpid()) 来作为初始化种子,在同一个程序中这个种子是固定的。
随机数生成函数:int rand ( void );产生一个伪随机数(根据 srand 初始的随机数种子),范围为 0 - RAND_MAX(系统宏定义)。RAND_MAX 至少为 32767。以下代码生成10个随机数。
srand( (unsigned int) time(0));
for(i = 0;i<10;i++){
a[i] = rand();
printf("%d\n",a[i]);
}
更多相关内容 -
使用c语言生成随机数的示例分享
2020-12-25 23:34:52这是一个自己用c写的不重复产生随机数的代码,且只有输入q才能退出程序。 代码如下:#include <stdio>#include <stdlib>#include <time>#define MAX 100 int main(void){ int i, j, flag, num, a[MAX] = { 0 }, ... -
c语言生成随机数
2022-03-08 20:25:52生成随机数 rand()函数在stdlib.h的头文件中。 rand() 会随机生成一个位于 0 ~ RAND_MAX 之间的整数。RAND_MAX 是 <stdlib.h> 头文件中的一个宏,它用来指明 rand() 所能返回的随机数的最大值。C语言标准并...生成随机数
rand()函数在stdlib.h的头文件中。
rand() 会随机生成一个位于 0 ~ RAND_MAX 之间的整数。RAND_MAX 是 <stdlib.h> 头文件中的一个宏,它用来指明 rand() 所能返回的随机数的最大值。C语言标准并没有规定 RAND_MAX 的具体数值,只是规定它的值至少为 32767。所以在实际编程中,我们也不需要知道 RAND_MAX 的具体值,把它当做一个很大的数来对待即可。#include<stdio.h> #include<stdlib.h> int main() { int a=rand(); printf("%d\n",a); return 0; }
结果运行:41
这种方法每次输出的随机数都是一样的。每次输出的随机数都不同
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a; srand((unsigned)time(NULL)); a = rand(); printf("%d\n", a); return 0; }
多次运行后输出的结果不同,并且有逐渐变大,逐渐变小的趋势
生成一定范围内的随机数
规定0-9之内的数字
int a = rand() % 10; //产生0~9的随机数,注意10会被整除,不包括10
规定12-36(包括36)
int a = rand() %25+12;
则可以看作是从(0–25)+12,表示12–37(包括36)
则rand()%26 表示0–25 rand()%26+12 表示12-36猜字游戏
题目要求:
电脑应随机产生一个数字(为便于玩家猜测,所以选择1~100)
玩家输入所猜数字,电脑给予反馈。
玩家得知反馈后进行进一步操作。(如:所猜数字过大,所猜数字过小,所猜数字正确(是否重玩一局)———>暂时没有写出)
每次执行程序获取到的随机数应不相同
创建一个结构体, 包含名字和密码两个字段, 提前准备一个实体(设置它的名字为admin, 密码为123), 玩游戏前需验证名字和密码(可选做)#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> struct game{ char name; int mima; }game; void hanshu(int num) { int a=rand()%101; while(1) { printf("请输入数字:\n"); scanf("%d",&num); if(num>a) printf("猜大了\n"); else if(num<a) printf("猜小了\n"); else { printf("恭喜猜对了"); break; } } } int main() { printf("请输入姓名:\n"); scanf("%c",&game.name); printf("请输入密码:\n"); scanf("%d",&game.mima); if(game.name =='a' && game.mima==1) { int n; srand((unsigned int)time(NULL)); hanshu(n); } else { printf("输错了"); } }
-
c语言生成随机数的方法(获得一组不同的随机数)
2020-09-04 19:33:45c语言生成一组不同的随机数,大家参考使用吧 -
C语言生成随机数的方法
2022-03-25 17:56:12以上就是今天要讲C语言生成随机数的内容,包含rand、srand和time函数的使用,希望对刚刚阅读本篇博客的你有所帮助。
一、rand函数:
int rand( void );
我们先来看一下rand函数的基本信息:
rand函数根据种子生成随机值,但是每次程序运行种子是固定的,如果只使用它实际上返回的是伪随机整数。
看上图红线部分内容:rand函数返回的伪随机整数。在调用rand之前,要先使用srand函数为伪随机数发生器设定种子。二、srand函数:
void srand( unsigned int seed );
我们再来看一下srand函数的基本信息:
我们通过函数原型可以看到,srand需要一个无符号整形的一个种子参数,如果srand每次传入的种子相同的话,那么rand函数生成的随机值也是相同的,这在某种意义上并不随机了。那么问题来了,要想随机值够随机的话,我们还需要一个随机种子~
通常我们使用时间作为随机数生成的种子,因为每次程序运行时间不相同,所以生成的随机数也肯定不相同。三、time函数:
time_t time( time_t *timer );
我们再来看一下time函数的基本信息:
我们只需要给time函数传空指针NULL,他会给我们返回当前时间的时间戳。这样的话就可以实现时间种子生成随机数。演示代码:
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { srand((unsigned int)time(NULL)); int ret = rand(); printf("%d\n", ret); return 0; }
四、生成范围随机数公式:
很多时候我们需要生成一个带范围的随机值:例如1~100。
其实这个很简单:
srand((unsigned int)time(NULL)); int ret1 = rand() % 10 + 1;//生成1~10的随机数 int ret2 = rand() % 100 + 1;//生成1~100的随机数 int ret3 = rand() % 34 + 66;//生成66~99的随机数 int ret4 = rand() % (n - m + 1) + m;//生成n~m的随机数
五、实战练习:
实战练习运用一下生成随机数:
点看这篇:C语言猜数字游戏
总结
以上就是今天要讲C语言生成随机数的内容,包含rand、srand和time函数的使用,希望对刚刚阅读本篇博客的你有所帮助。
-
c语言生成随机数方法介绍
2022-05-20 21:53:01c语言生成随机数方法介绍 -
C语言生成随机数的函数、延时函数
2021-05-24 06:43:18下面C语言代码使用了生成随机数的函数、延时函数。请大家仔细观察其显示效果。 从以下代码,我们可以得出一个重要的结论:当上述两类函数被放入循环时,应作出一定修改。同时还应关注其参数的定义位置(子函数外?子...下面C语言代码使用了生成随机数的函数、延时函数。请大家仔细观察其显示效果。 从以下代码,我们可以得出一个重要的结论:当上述两类函数被放入循环时,应作出一定修改。同时还应关注其参数的定义位置(子函数外?子函数内?全局变量?局部变量?)。 另外大
下面C语言代码使用了生成随机数的函数、延时函数。请大家仔细观察其显示效果。
从以下代码,我们可以得出一个重要的结论:当上述两类函数被放入循环时,应作出一定修改。同时还应关注其参数的定义位置(子函数外?子函数内?全局变量?局部变量?)。
另外大家要注意:scanf在输入double型时,,应该使用%lf,而在printf时却只需使用%f.
#include
#include
#include
double t_delay;
time_t start,end; //start,end修改后的位置
int createOrNot()
{
int flag;
//srand(time(NULL) );//srand()原先的位置
flag = (int)( (2*rand()/RAND_MAX) +1 );
return flag;//return 1 or 2
//1 create,2 not create.
}
void delay()
{
time_t start,end;//end原先的位置
double dif;
time (&start);
while( (dif= difftime (end,start) )<5000.0 )//注意这里
{
time (&end);
};
}
void delay(time_t end )//end修改后的位置
{
time_t start;//,end;
double dif;
time (&start);
while( (dif= difftime (end,start) )<2.0 )//注意这里
{
time (&end);
};
}
void delay(time_t end,double time_delay)//change...
{
time_t start;//,end;//change...
double dif;
time (&start);
time (&end);
while( (dif= difftime (end,start) ) < time_delay )
{
time (&end);
};
}
void delay(time_t start,time_t end)//change...
{
//time_t start;//,end;//change...
double dif;
time (&start);
time (&end);
while( (dif= difftime (end,start) ) < t_delay )
{
time (&end);
};
}
int main()
{
int i,flag = 1,times =10;
//time_t start,end; //start,end修改后的位置
srand(time(NULL) );//修正后,srand()所应在的位置。
for(i=0;i
{
flag= createOrNot();
printf("%dn",flag);
delay();
//delay(end);
}
printf("nn");
for(i=0;i
{
flag= createOrNot();
printf("%dn",flag);
//delay();
delay(end);
}
printf("t_delay:n");
scanf("%lf",&t_delay);/
//printf("t_delay:%fn",t_delay);
for(i=0;i
{
flag= createOrNot();
printf("%dn",flag);
//delay();
delay(end,t_delay);
}
printf("t_delay:n");
scanf("%lf",&t_delay);
for(i=0;i
{
flag= createOrNot();
printf("%dn",flag);
//delay();
delay(start,end);
}
}
-
句子随机生成器-怎么用C语言生成随机数
2021-05-21 16:31:21为随机数生成器初始化一个种子值在易语言中使用什么命令名置随机数种子 ()‘调用格式: 〈无返回值〉 置随机数种子 (〔整数型 欲置入的种子数值〕) - 系统核心支持库->算术运算英文名称:randomize为随机数生成器... -
C语言生成随机数和随机数组
2019-12-03 20:18:21C语言生成随机数和随机数组 time函数要包含头文件<time.h> rand函数要包含头文件<stdlib.h> 随机数 int a; srand((unsigned)time(NULL)); // 播种 a = rand() % 200 + 1; 随机数组 #include <... -
C语言生成随机数的函数,为什么循环后随机数都一样?
2020-04-29 21:20:40} } 输出结果如下: 9679/8557= 8557/14412= 8557/14412= 8557/14412= 8557/14412= 8557/14412= 8557/14412= 8557/14412= 8557/14412= 8557/14412= 原因如下: srand()函数是初始化随机数产生器,它产生随机数种子... -
C语言生成随机数保存在文件中
2019-06-13 10:06:02为什么80%的码农都做不了架构师?>>> #include #include #include ..."随机数生成完毕 " ) ; 转载于:https://my.oschina.net/itfanr/blog/195686 -
Linux C语言生成随机数
2018-04-06 13:49:421.rand()函数 是产生随机数的一个随机函数:#include <stdlib.h> int rand(void);return value: 为一个随机数值,范围咋0至RAND_MAX之间(定义在stdlib.h,如下) /* The largest number rand will... -
C语言生成随机数 把系统时间的ms值作为随机数或者随机数的种子
2021-05-20 14:57:25满意答案C语言 毫秒级Sleep(); 功 能: 执行挂起一段时间 原型:Sleep(unisgned long);clock(); 功能:开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元数组范围扩大到10个元素,下标也扩大到0~... -
C语言生成真正随机数的一个例子
2015-04-29 13:14:00C语言生成真正随机数,可设定均匀分布随机数的区间