C/C++中rand() 函数产生随机数与srand()设置随机数种子

 (1)rand()产生随机数,输出的随机数序列是确定的,即每次运行结果一致

#include 

int main()
{
	int i, j;
	for (i = 0; i < 10; i++)
	{
		j =10.0 * rand() /RAND_MAX;
		std::cout << j << "  ";
	}

	system("pause");
	return 0;
}

 

 第一次编译后:

第一次运行:0  5  1  8  5  4  3  8  8  7  请按任意键继续. . .

 第二次运行:0  5  1  8  5  4  3  8  8  7  请按任意键继续. . .

第二次编译后:

第一次运行: 0  5  1  8  5  4  3  8  8  7  请按任意键继续. . .

第二次运行:0  5  1  8  5  4  3  8  8  7  请按任意键继续. . . 

 

 (2)使用srand()设置随机数的种子,使得每次运行产生的随机数不一样

#include 
#include 

int main()
{
	int i, j;
	srand((int)time(0));   //包含time.h
	for (i = 0; i < 10; i++)
	{
		j =10.0 * rand() /RAND_MAX;
		std::cout << j << "  ";
	}
	system("pause");
	return 0;
}

第一次编译后:

第一次运行:5  0  8  8  8  4  9  8  0  6  请按任意键继续. . .

第二次运行:5  9  8  4  4  3  1  7  1  0  请按任意键继续. . .

第三次运行:5  1  1  0  2  6  8  1  2  8  请按任意键继续. . .

第二次编译后:

第一次运行:5  7  9  0  0  3  0  7  2  7  请按任意键继续. . .

第二次运行:5  6  1  0  7  1  4  4  8  9  请按任意键继续. . .

第三次运行:5  2  3  5  0  1  0  9  3  7  请按任意键继续. . .

 

#include 
#include 

int main()
{
	int i, j;
	srand((int)time(NULL));   //包含time.h

	for (i = 0; i < 10; i++)
	{
		j =10.0 * rand() /RAND_MAX;
		std::cout << j << "  ";
	}
	std::cout << std::endl;

	for (i = 0; i < 10; i++)
	{
		j = 10.0 * rand() / RAND_MAX;
		std::cout << j << "  ";
	}
	system("pause");
	return 0;
}

第一次编译后:

第一次运行:5  5  8  1  0  6  2  2  3  1
8  1  2  1  2  1  0  6  0  7  请按任意键继续. . .

第二次运行:5  5  3  0  7  8  0  4  5  8
0  3  8  4  0  8  8  2  9  7  请按任意键继续. . . 

 

 (3)每次调用srand()都将重新设置随机数种子,由于两次设置时间间隔小于1s【这是由于time(0)返回值是从1970年1月1日至今所经历的时间(以秒为单位)】,所有两次设置的种子一致,导致两次输出的随机数序列相同,所以如果不能保证两次srand()设置的时间间隔大于1s,则不要调用两次srand(),否则将得到相同的随机数序列

#include 
#include 

int main()
{
	int i, j;
	srand((int)time(NULL));   //包含time.h

	for (i = 0; i < 10; i++)
	{
		j =10.0 * rand() /RAND_MAX;
		std::cout << j << "  ";
	}
	std::cout << std::endl;

	srand((int)time(NULL));
	for (i = 0; i < 10; i++)
	{
		j = 10.0 * rand() / RAND_MAX;
		std::cout << j << "  ";
	}
	system("pause");
	return 0;
}

第一次编译后:

第一次运行:5  4  2  3  2  4  2  7  4  6
5  4  2  3  2  4  2  7  4  6  请按任意键继续. . . 

第二次运行:5  1  6  9  2  9  3  9  6  5
5  1  6  9  2  9  3  9  6  5  请按任意键继续. . .

你可能感兴趣的:(C/C++中rand() 函数产生随机数与srand()设置随机数种子)