题目:
许多州的彩票发行机构都使用如下所示程序的简单彩票的变体。在这些玩法中,玩家从一组被称为域号码的号码中选择几个。列如,可以从域号码1~47中选择5个号码;还可以从第二个区间(如1~27)选择一个号码(称为特选号码)。要赢得头奖,必须正确猜中所有的号码。中头奖的几率是选择所有域号码的几率与选择特选号码几率的乘积。例如,在这个例子中,中头奖的几率是从47个号码中正确选择5个号码的几率域从27个号码中正确选择1个号码的几率的乘积。请修改一下程序,以计算中得这种彩票头奖的几率。
#include <iostream>
long double probability(unsigned numbers, unsigned picks);
int main()
{
using namespace std;
double total, choices;
cout << "输入彩票上的选择总数和允许的选择数: ";
while ((cin >> total >> choices) && choices <= total)
{
cout << "您有 " << probability(total, choices) << " 胜算" << endl;
cout << "请输入下一个数字(输入q退出): ";
}
cout << "bye" << endl;
return 0;
}
long double probability(unsigned numbers, unsigned picks)
{
long double result = 1.0;
long double n;
unsigned p;
for (n = numbers, p = picks; p > 0; n--, p--)
{
result = result * n / p;
}
return result;
}
源代码:
#include <iostream>
long double probability(unsigned numbers, unsigned picks);
int main()
{
using namespace std;
double total_one, choices_one,total_two,choices_two=1;
cout << "输入彩票上的选择总数和允许的选择数(第一区间): ";
while ((cin >> total_one >> choices_one) && choices_one <= total_one)
{
cout << "输入彩票上的选择总数(第二区间): ";
if (!(cin >> total_two))
break;
cout << "您获得头奖有 " << probability(total_one, choices_one) * probability(total_two, choices_two) << " 胜算" << endl;
cout << "输入彩票上的选择总数和允许的选择数(第一区间): ";
}
cout << "bye" << endl;
return 0;
}
long double probability(unsigned numbers, unsigned picks)
{
long double result = 1.0;
long double n;
unsigned p;
for (n = numbers, p = picks; p > 0; n--, p--)
{
result = result * n / p;
}
return result;
}
演示效果:
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈
标签:cout,号码,46,double,练习,unsigned,C++,choices,result From: https://blog.csdn.net/little_startoo/article/details/142449183