`
tempsitegoogle
  • 浏览: 867603 次
文章分类
社区版块
存档分类
最新评论

关于rand()

 
阅读更多

rand是CRT函数,功能是输出一个伪随机数,最大不超过RAND_MAX。下面是一个简单的示例:

/* a demo of rand
 * date: 2011-12-05
 * created: ume
 * remarks:
 *	注意输出格式
 */
#include<iostream>
#include<iomanip>
#include<time.h>
using namespace std;
// functions
void SimpleRand(int n)
{
	for(int i = 0; i < n; ++i)
	{
		cout<<setw(6)<<rand()<<endl;
	}
}
void RangedRand(int min, int max, int n)
{
	for(int i = 0; i < n; ++i)
	{
		cout<<setiosflags(ios_base::fixed)<<setw(6)<<setprecision(2)<<((double)rand()/(RAND_MAX + 1)*(max - min) + min)<<endl;
	}
}
// main function
void main()
{
	srand((unsigned int)time(NULL));
	SimpleRand(10);
	cout<<endl;
	RangedRand(-50, 50, 10);
	system("pause");
	return;
}

我们定义了两个函数SimpleRand()和RangedRand(),参数n表示产生随机数的数量,min和max表示随机数的大小范围。主函数在调用它们之前,调用了srand()来设置随机数发生器的初始状态。如果不设置或设置为某个固定的整数,程序每次运行的结果都一样。在示例中,我们使用了CRT函数time()获取本机的时间,它的返回值是距离1970年元旦凌晨流逝的秒数。程序每一次运行,获得的秒数都不一样,这就保证了每次输出都不相同。此外,在SimpleRand()和RangedRand()函数中我们对输出格式进行了控制,setw(6)表示输出长度是6位,setiosflags(ios_base::fixed)表示小数位长度固定,它与setprecision(2)共同起作用,使输出的小数的小数位总为2。运行示例程序,其结果如下所示:


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics