x在main函数中是第一个卡池爆率,y是第二个卡池爆率,总爆率是x*y。但是不知道为什么爆率虚无了
#include
using namespace std;
long double process_x(unsigned pool, unsigned piks);
long double process_y(unsigned pool, unsigned piks);
int main()
{
int pool_x;
int pool_y;
int picks_x;
int picks_y;
cout << "How many cards in each pool? " << endl;
cin >> pool_x;
cin>> pool_y;
cout << "How many cards u can pick? " << endl;
cin >> picks_x;
cin>> picks_y;
long double x = process_x(pool_x, picks_x);
long double y = process_y(pool_y, picks_y);
cout << "So the win rate is " << x * y << endl << "Good luck,bye ";
return 0;
}
long double process_x(unsigned pool, unsigned piks)
{
long double x = 1.0;
for (int i = 0; i < piks;i++)
x = x * ((piks-i)/(pool-i));
return x;
}
long double process_y(unsigned pool, unsigned piks)
{
long double y = 1.0;
for (int i = 0; i < piks;i++)
y = y * ((piks-i)/ (pool-i));
return y;
}
(piks-i)/(pool-i)中都是整数,所以进行的是整除。如果分子小于分母,结果就是0,不会是小数。
改成
(piks-i)*1.0/(pool-i)就可以了