求助 福利彩票的模拟,C++或数据结构均可,十分感谢

来源:百度知道 编辑:UC知道 时间:2024/05/18 01:34:28
[讨论]一道题目,大家来看看怎么做?福利彩票的模拟:
从1~33个数中选取6个数作为一组,即为一张彩票;中奖号码也是类似这样的一组数,每一张彩票的号码和中奖号码中的6个号进行比较,相同号码的个数,作为评奖的依据,相同号码的个数越多,中奖级别越高,奖金越高。
要求:
1.从键盘输入或利用随机数自动生成一组中奖号码。
2.由系统随机生成若干张彩票,与给定的中奖号码进行比较,统计这些彩票的中奖情况(见下表)。
3.中奖规定:一等奖猜对6个号码,二等奖猜对5个号码,三等奖猜对4个号码,四等奖猜对3个号码,五等奖猜对2个号码

福利彩票的中奖情况统计表(表)
一等奖 二等奖 三等奖 四等奖 五等奖 合计

彩票张数
比例

#include <iostream>
#include <cstdlib>
#include <valarray>
#include <cstddef>
#include <ctime>
#include <iomanip>
using namespace std;

class lottery
{
public:
typedef valarray<size_t> data_type;
typedef valarray<bool> check_type;

explicit lottery(size_t from, size_t to, const data_type& win)
: begin_number(from), end_number(to), win_ticket(win)
{
random_generate_ticket.resize(win_ticket.size());
check_result.resize(win_ticket.size());
}

const data_type& random_generate()
{
for(size_t i = 0; i < win_ticket.size(); ++i)
random_generate_ticket[i] = rand() % end_number + begin_number;
return random_generate_ticket;
}

const check_type& ticket_check(const data_type& ticket)
{
return check_result = (ticket == win_ticket);
}

private:
size_t b