用C++写一个算法。有4个等级的玩家,每种玩家进一次游戏就会随机获得或减少一定的分数,最终的目的是

用C++写一个算法。有4个等级的玩家,每种玩家进一次游戏就会随机获得或减少一定的分数,最终的目的是达到3000分就算成功。要求:第一个等级的玩家很容易就能达到3000分,第二个等级的玩家要重复很多次才能达到3000分,第三个等级的玩家是感觉有希望能达到3000分,但实际却是没法达到,第四个等级的玩家直接就能知道,无论进多少次游戏,都没法完成。注意,玩家的每次的分数不能只增不减或只减不增。急。。。帮帮忙,兄弟!

完整代码如下:

编译器:VS2012.

原理:生成随机数,从随机数分布概率着手设定达标速度与胜率.现在的胜率设置比较极端,请自行调整。

#include<time.h>
#include<iostream>
using namespace std;int randNum(int rangeMin,int rangeMax)
{
 return static_cast<double>(rand())/(RAND_MAX+1)*(rangeMax-rangeMin+1)+rangeMin; 
}int main()
{
 const int member = 4;
 int player[member] = {0};
 int turn[member] = {0};
 int cnt = 0;
 bool state = false;
 while(cnt < 100000)
 {
  for(int i=0;i!=member;i++)
  {
   switch (i)
   {
   case 0:
    {
     if(player[i] > 3000)
      break;
     player[i]+=randNum(-1,400);
     turn[i]++;
     break;
    }
   case 1:
    {
     if(player[i] > 3000)
      break;
     player[i]+=randNum(-50,100);
     turn[i]++;
     break;
    }
   case 2:
    {
     if(player[i] > 3000 || player[i] < 2100000000)//21E
      break;
     player[i]+=randNum(-100,1);
     turn[i]++;
     break;
    }
   case 3:
    {
     if(!state)
      cout << "P4你必然无法到达目标分数."<< endl;
     else
      break;
     state = true;
     break;
    }
   }
  }
  cnt++;
 }
 cout << endl;
 cout << "运行游戏:" << cnt << "次" << endl;
 for(int i=0;i!=member-1;i++)
 {
  cout << "第" << turn[i] <<"回,P"<< i+1
    << (player[i]>=3000?"达到目标点数3000点.":"还是无法达到目标点数3000点.") << endl;
 }
 return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-04-19
字好多
相似回答