#include <iostream>
#include<windows.h>
#include <cstdio>
#include<cstdlib>
#include<ctime>
using namespace std;
double card_N[6]={0,39,26,21,13,10};//卡牌数目
double card_NN[6]={0,13,13,13,12,8};
double card_p[12][5]={{0,0,0,0,0},{0,0,0,0,0},{1,0,0,0,0},{0.75,0.25,0,0,0},{0.5,0.3,0.2,0,0},{0.4,0.33,0.25,0.02,0},{0.25,0.4,0.3,0.05},{0.19,0.3,0.35,0.15,0.1},{0.15,0.2,0.35,0.15,0.01},{0.1,0.15,0.3,0.3,0.15},{0.05,0.1,0.2,0.4,0.25},{0.1,0.2,0.12,0.5,0.35}};//卡牌概率
int CC(int x,int y){
int t=1;
for(int i=1;i<=x;i++){
t=t*(y-i+1);
}
for(int i=x;i>=1;i--){
t/=i;
}
return t;
}
//功能1,某一个英雄出现的概率
void card_x_p(int X,const int and_x,const int and_X){
// 价格,持有,持有+
//输出个数比1,2
double S=card_N[X]*card_NN[X]-and_x;//总数
double s=card_NN[X];
cout<<"概率:"<<s-and_X<<"/"<<S<<endl;
cout<<"剩余:"<<s-and_X<<"/"<<s<<endl;
cout<<"输入等级(输入1补充持有,输入0重新开始)"<<endl;
int N=1;
for(;;){
cin>>N;
if(N==0){
Sleep(200);
system("cls");
break;
}
if(N==1){
int a,b;
cout<<"补充同金持有,补充持有"<<endl;
cin>>a>>b;
Sleep(200);
system("cls");
card_x_p(X,and_x+a,and_X+b);
break;
}
cout<<"此级某一个是这个英雄的概率"<<(s-and_X)/S*card_p[N][X-1]*100<<"%"<<endl;
double t1=card_p[N][X-1];
double t2=(s-and_X)/S;
double St=0;
for(int i=0;i<=5;i++){
double t0=1;
for(int j=1;j<=5;j++){
if(i>=j){
t0*=t1*(1-t2);
}else{
t0*=(1-t1);
}
}
t0*=CC(i,5);
St+=t0;
}
cout<<"至少出现一个概率"<<(1-St)*100<<"%"<<endl;
}
}
int main(){
//功能1,某一个英雄出现的概率
//功能2,某一个羁绊出现的概率
//先做功能1
for(;;){
cout<<"╭┈┈┈┈┈┈┈┈┈┈┈┈┈┈╮"<<endl;
cout<<"┊ ┊"<<endl;
cout<<"┊ 云顶辅助器 ┊"<<endl;
cout<<"┊ ┊"<<endl;
cout<<"╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈╯"<<endl;
int t[11];
cout<<"D牌英雄价格+同价持有+英雄持有"<<endl;
for(int i=1;i<=3;i++){
cin>>t[i];
}
Sleep(200);
system("cls");
card_x_p(t[1],t[2],t[3]);
}
return 0;
}
云顶辅助器
最新推荐文章于 2024-08-09 10:25:03 发布