C++大学基础教程_6_7随机数的生成

#include <iostream>//C++标准输入输出函数
#include <cstdlib>//随机数等工具函数
#include <iomanip>//包含格式化数据流的流数据元
using namespace std;

int main()
{
	for(int counter=1;counter<=100;counter++)
	{
		cout << setw(5) << (1+rand()%6) ;
		if(counter%5 == 0)
			cout << endl;
	}

	system("pause >> cout");
	return 0;
}

//利用rand()获取随机数,而rand()%6再加1从而获取从1到6的随机数
//so nice 

 

//投掷六面骰子6000000次

#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;

int main()
{
	//记录1-6出现的频率,也就是在6000000次的掷骰子过程中出现的次数
	int frequency1 = 0;
	int frequency2 = 0;
	int frequency3 = 0;
	int frequency4 = 0;
	int frequency5 = 0;
	int frequency6 = 0;

	int face ;//掷骰子过程中每一次骰子的点数
	for(int counter=1;counter<=6000000;counter++)
	{
		face = 1 + rand()%6 ;//产生随机数
		switch(face)
		{
		case 1:
			frequency1 = frequency1 + 1;
			break;                                     //break不能忘啊,忘了就呵呵呵呵了,不信试试咯
		case 2:
			frequency2 = frequency2 + 1;
			break;
		case 3:
			frequency3 = frequency3 + 1;
            break;
		case 4:
			frequency4 = frequency4 + 1;
			break;
		case 5:
			frequency5 = frequency5 + 1;
			break;
		case 6:
			frequency6 = frequency6 + 1;
			break;
		default:
			cout << "Program should never get here !" << endl;
		}
	}

	cout << " Face" << setw(10) << "Frequency" << endl;
	cout << "    1"  << setw(10) << frequency1 << "\n"  
		   << "    2"  << setw(10) << frequency2 << "\n"
		   << "    3"  << setw(10) << frequency3 << "\n"  
		   << "    4"  << setw(10) << frequency4 << "\n"
		   << "    5"  << setw(10) << frequency5 << "\n"  
		   << "    6"  << setw(10) << frequency6 << "\n"
		   << endl;

	system("pause >> cout ");
	return 0;
}

 //产生的随机数是重复的,该如何解决?

//调用<cstdlib>中的srand()函数,改变rand()函数的种子,(大概就是起点吧)

 

//为了保证产生的随机数不是全部一样的(运行多次程序)
//利用srand()函数确定每次产生随机数的起点,种子???
#include <iostream>
//using std::cin;
//using std::cout;
//using std::endl;

#include <iomanip>
//using std::setw;

#include <cstdlib>
//using std::rand;
//using std::srand;

using namespace std;

int main()
{
	unsigned seed ;
	cout << "enter seed :" ;
	cin >> seed ;
	srand(seed);
	for(int counter=1;counter<=10;counter++)
	{
		cout << setw(5) << (1 + rand()%6) ;
		if(counter%5 == 0)
			cout << endl;

	}

	system("pause >> cout ");
	return 0;
}

//但是输入相同的seed值,结果仍然是相同的啊!!!

 

猜你喜欢

转载自jia-shun.iteye.com/blog/2064828
今日推荐