今天写个适合C++初学者练习的程序,模拟做个3D福彩系统,看看亏钱还是赚钱,
当然我们这里都是假设,而且规则和真实的3D彩票不一样的,
仅供学习和娱乐。

一、程序逻辑与步骤
这里把这个3D福彩系统的编写逻辑与步骤写一下,
因为我们是模拟是赚钱还是亏钱,所以就不写彩票的买入,
而是直接生成一堆彩票信息,
再生成中奖号码,看看是否可以盈利。
步骤如下:
1.生成10000组随机的彩票号码
这一过程练习,C++随机数的生成
2.将生成的号码保存到文件中;
练习C++文件的写入方法
3.统计所有号码的次数
理解桶排序的原理
4.找出出现次数最少的数字,并放入新数组
练习动态数组的使用,
这一功能有啥用自己想
5.统计输出所有的信息
练习关于格式化输入的部分知识点
二、3D彩票开奖各步骤的编写
1. 生成随机的数字
使用过python生成随机数字的方法,
再使用C++真是很麻烦
1)python 版本的
import random
n = random.randint(0,1000)
2)C++ 98版本的
//头文件
#include <random>
#include <ctime>
//生成0~1000的随机数
srand(time(0));
int a = rand()%1000;
3)C++ 11版本的
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<> distrib(0,999);
int a = distrib(gen);
如果看不懂,就经常用几次,之后就慢慢会了,开始不必强求要理解每一行,
即使是详细讲解,也是稍微理解个毛,连皮都看不到。
(好奇就让AI讲一下,看你能不能懂)
2. 将生成的号码保存到文件中
1)导入头文件
#include <fstream>
2)建立保存的文件
这两个名可变:outfile 是变量名,123.txt是文件名
ofstream outfile("123.txt");
3)将数据保存到文件中
从C++程序的角度,保存到文件中,相当于输出
int a = rand()%1000;
outfile << a << endl;
4)优化上一步的数据,按三位数的格式保存
如整数3,以”003″保存到文件中
int a = rand()%1000;
outfile << setw(3) << setfill('0') << a << endl;
5)关闭文件
使用完文件随手关闭
outfile.close();
3.动态数组
建立一个动态数组,保存数量最少的数字
1)定义动态数组
vector<int> nums_min;
2)向数组结尾添加数字
nums_min.push_back(i)
三 源代码
代码写完后,先运行试试,再看
#include <iostream>
#include <random>
#include <fstream>
#include <iomanip>
#include <vector>
#include <ctime>
using namespace std;
int main(){
srand(time(0));
ofstream outfile("123.txt");
if (!outfile.is_open()){
cerr << "打开错误!";
return 1;
}
// 数组大小为 1000,用来统计 0-999 每个数字出现的次数
int nums[1000] = {0};
// 生成 10000 个随机数
for (int i = 0; i < 10000; i++){
int a = rand()%1000;
outfile << setw(3) << setfill('0') << a << endl;
nums[a]++; // 对应数字的计数器加 1
}
outfile.close(); // 记得关闭文件
// 1. 找出最小的出现次数
int min_n = 10001; // 初始值设为比最大可能次数(10000)大一点
for (int i = 0; i < 1000; i++){
if (nums[i] < min_n){
min_n = nums[i];
}
}
vector<int> nums_min;
for (int i = 0; i < 1000; i++){
if (nums[i] == min_n){
nums_min.push_back(i);
}
}
cout << "最小出现次数为: " << min_n << endl;
cout << "出现次数最少的数字有: ";
for (int num : nums_min){
cout << num << " ";
}
cout << endl;
int b = rand()%1000;
cout << "中奖号码:" << b << endl;
cout << "中奖人数:" << nums[b] << endl;
cout << "奖金:" << nums[b]*1000 << endl;
cout << "盈利:" << 20000-nums[b]*1000 << endl;
return 0;
}C++