C语言中产生随机数的方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
return 0;
}
在C语言中产生随机数需要以下几个函数的配合使用。
(1)rand函数——产生伪随机数
原型:int rand(void)
头文件:stdlib.h
功能:产生从0到RAND_MAX之间的随机数。RAND_MAX的值通常是0x7fff(十六进制数7FFF,也就是十进制数32767)。
例:
#include <stdio.h>
例:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i;
srand((unsigned) time(NULL)); //函数time取得时间,其头文件是time.h
for (i=0;i<10;i++)
printf("%d\n", rand());
C语言中由于采用固定的序列作为种子,所以每次执行所取的是同一个数。
为上面的例子增加一个循环结构:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int k,i;
for (i=0;i<10;i++)
{
k = rand();
printf("%d\n", k);
#include <stdlib.h>
int mawenku.baidu.comn()
{
int k;
k = rand();
printf("%d\n", k);
return 0;
}
编译运行,发现每次运行程序产生的随机数都是一样的。
计算机中产生随机数,实际是采用一个固定的数作为“种子”,在一个给定的复杂算法中计算结果,所以叫“伪随机数”。
for (i=0; i<10; i++)
//printf("%d\n", rand()); //产生[0,0x7fff)即[0,32767)以内的随机整数
//printf("%d\n", rand()%100); //产生0-99的随机整数
printf("%d\n", rand()%(200-100+1)+100); //产生[100,200]内的随机整数
}
return 0;
}
运行时会产生10个互不相同的随机数。但再次运行,产生的还是这10个数。
为了产生不同的随机数列,需要srand函数来改变随机数种子。
(2)srand()函数
原型:void srand(unsigned seed)
头文件:stdlib.h
功能:由随机数种子seed进行运算产生随机数的起始数据。与rand函数配合使用,可产生不同的随机数列。
return 0;
}
程序运行时,每次产生10个不同的随机数。因为采用时间作为种子,而时间一直在变化,所以就产生了“随机”的随机数了。
在实际应用中,常需要产生指定范围的随机整数。可采用下面给出的表达式。
(3)产生指定区间的随机数
采用表达式rand()%(Y-X+1)+X可以产生[X,Y]区间内随机整数。
C语言中产生随机数的方法
引例:产生10个[100-200]区间内的随机整数。
#include <stdio.h>
#include <stdlib.h> //rand函数的头文件
#include <time.h> //时间函数的头文件
int main()
{
int i;//循环变量
srand((unsigned) time(NULL)); //产生随机数的起始数据(以时间为种子)
例如:
rand()%100//产生0~99间的随机数
rand()%(200-100+1)+100 //产生100-200间的随机数
}
在C语言中产生随机数需要以下几个函数的配合使用。
(1)rand函数——产生伪随机数
原型:int rand(void)
头文件:stdlib.h
功能:产生从0到RAND_MAX之间的随机数。RAND_MAX的值通常是0x7fff(十六进制数7FFF,也就是十进制数32767)。
例:
#include <stdio.h>
例:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i;
srand((unsigned) time(NULL)); //函数time取得时间,其头文件是time.h
for (i=0;i<10;i++)
printf("%d\n", rand());
C语言中由于采用固定的序列作为种子,所以每次执行所取的是同一个数。
为上面的例子增加一个循环结构:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int k,i;
for (i=0;i<10;i++)
{
k = rand();
printf("%d\n", k);
#include <stdlib.h>
int mawenku.baidu.comn()
{
int k;
k = rand();
printf("%d\n", k);
return 0;
}
编译运行,发现每次运行程序产生的随机数都是一样的。
计算机中产生随机数,实际是采用一个固定的数作为“种子”,在一个给定的复杂算法中计算结果,所以叫“伪随机数”。
for (i=0; i<10; i++)
//printf("%d\n", rand()); //产生[0,0x7fff)即[0,32767)以内的随机整数
//printf("%d\n", rand()%100); //产生0-99的随机整数
printf("%d\n", rand()%(200-100+1)+100); //产生[100,200]内的随机整数
}
return 0;
}
运行时会产生10个互不相同的随机数。但再次运行,产生的还是这10个数。
为了产生不同的随机数列,需要srand函数来改变随机数种子。
(2)srand()函数
原型:void srand(unsigned seed)
头文件:stdlib.h
功能:由随机数种子seed进行运算产生随机数的起始数据。与rand函数配合使用,可产生不同的随机数列。
return 0;
}
程序运行时,每次产生10个不同的随机数。因为采用时间作为种子,而时间一直在变化,所以就产生了“随机”的随机数了。
在实际应用中,常需要产生指定范围的随机整数。可采用下面给出的表达式。
(3)产生指定区间的随机数
采用表达式rand()%(Y-X+1)+X可以产生[X,Y]区间内随机整数。
C语言中产生随机数的方法
引例:产生10个[100-200]区间内的随机整数。
#include <stdio.h>
#include <stdlib.h> //rand函数的头文件
#include <time.h> //时间函数的头文件
int main()
{
int i;//循环变量
srand((unsigned) time(NULL)); //产生随机数的起始数据(以时间为种子)
例如:
rand()%100//产生0~99间的随机数
rand()%(200-100+1)+100 //产生100-200间的随机数