习题3.3投骰子的随机游戏

来源:互联网 发布:体重测试软件 编辑:程序博客网 时间:2024/06/05 19:33
/*题目:每个骰子有六面,点数分别为1,2,3,4,5,6。游戏者在开始输入一个无符号整数,作为产生随机数的种子。每次投两次骰子,第一轮如果和数为7或11则为胜,游戏结束;和数为2,3或12则为败,游戏结束;和数若为其他数则将此值作为自己的点数,继续第二轮,第三轮···直至和数等于点数,则取胜,或出现和数为7,则为败 *///系统函数int rand(void)的功能是产生一个伪随机数,若连续调用会产生一个序列。每次运行会发现产生的序列都是//一样的。所以需先调用 void srand(unsigned int seed)为其设置种子(若不设置,会默认为1),产生的随机数就不同了 #include <iostream>#include<cstdlib> using namespace std;//投骰子,计算和数,输出和数int rollDice(){int data1=1+rand()%6;//将随机数的范围控制在1~6之间 int data2=1+rand()%6;int sum=data1+data2;cout<<"player rolled"<<data1<<"+"<<data2<<"="<<sum<<endl;return sum;} //判断结果 bool result(unsigned int seed){int sum=rollDice();int statu;switch(sum){case 7:case 11:cout<<"win"<<endl;break;case 2:case 3:case 12:cout<<"lose"<<endl;break;default:cout<<"continue"<<endl<<"point is"<<sum<<endl; statu=sum;while(1){sum=rollDice();if(statu==sum){cout<<"win"<<endl;break;}else if(sum==7){cout<<"lose"<<endl;break;}cout<<"continue"<<endl;}break;}} int main() {unsigned int seed;cout<<"请输入种子"<<endl;cin>>seed;srand(seed);//将种子传递给函数rand() result(seed); return 0;}


1.随机数的生成

需调用的两个函数为

(1)void srand(unsigned int seed)//seed为种子,若不指定默认为1

将种子传给rand();在函数rand()之前调用

(2)int rand(void)  

产生一个伪随机数;如产生一个0~6的随机数 int data1=1+rand()%6;

需包含的的头文件为 #include<cstdlib> 

注意

*若每次给予不同的种子,然后连续调用rand便可以产生不同的随机序列。若每次的种子一样,连续调用rand后产生的序列是相同的

例:

//.cpp//随机数的产生(0~6) #include <iostream>#include <cstdlib>using namespace std;int main() {unsigned int seed;cin>>seed;srand(seed);//将种子传给rand()for(int i=0;i<5;i++){cout<<1+rand()%6<<endl;//将随机数范围控制在0~6}return 0; }



0 0