另一种243线的SLOT游戏

3*5的数组

具体思路, 每个数组元素根据14个图案的概率去随机获取,

如果无法获取到则先赋值-1, 最后把-1的元素全部替换成无法赢钱的图案,这些图案中不能包含WILD和SCATTER,

我这的代码里概率设置的很低

#include <random>
#define RATELEN 15
#define ROW 3
#define LINE 5
std::default_random_engine eng(time(0));
void showarr(double * arr , int len){for(int i = 0; i < len  ; ++i){cout << arr[i] << " ";}cout << endl;
}
void show2(int ** arr , int row, int line){cout << endl;for(int i = 0 ; i < row; ++i){for(int j = 0 ; j < line; ++j){cout << arr[j][i] << "\t";}cout << endl;}
}double getRandRate(double rand_start, double rand_end){uniform_real_distribution<double> dis(rand_start , rand_end);return dis(eng);
}
int getOne(double * rates , int len , double randnum){for(int i = 0 ; i < len ; ++i){if(randnum > rates[i] &&  randnum <= rates[i+1] )return i+1;}return -1;
}
int getNotExistsNum(int * src , int srcLen, int * targetArr, int targetLen){for(int i = 0 ; i < srcLen  ; ++i){int t = src[i];bool bFind = true;for(int j = 0;  j < targetLen ; ++j){if(t == targetArr[j]){bFind = false;}}if(bFind){return t;}}return 0;
}
void buildFirstRow(int * row, int rowLen,int * targetArr, int targetLen){int iAllElements[12] = {1,2,3,4,5,//10 J Q K A6,7,8,    // M C N9,10,11,12 // Y R B W};vector<int> allElems(iAllElements,iAllElements+12);for(int i = 0 ; i < targetLen ; ++i){int t= targetArr[i];if(t > 0){auto iter = std::find(allElems.begin() , allElems.end() ,t);if(iter != allElems.end()){allElems.erase(iter);}}}random_shuffle(allElems.begin() , allElems.end());for(int i = 0 ; i < rowLen ; ++i){if(row[i] < 0){auto iter = allElems.begin();row[i] = *iter;allElems.erase(iter);}}}
void gen_arr(double * rates){double rand_start = 0.0;double rand_end = 1.0;int iAllElements[14] = {1,2,3,4,5,//10 J Q K A6,7,8,    // M C N9,10,11,12, // Y R B W13,14 //WILD SCATTER};set<int> sNeedRemove;vector<int> vBuPai(iAllElements, iAllElements + 12);//生成一个 3* 5 的数组, 除了随机到的可用 ,其他 -1的全部需要补齐,且补齐不能是WILD,SCATTER//也不能跟前后能组成赢钱int ** line_arr = new int*[LINE];for(int i = 0 ; i  < LINE; ++i){int *row = new int[ROW];line_arr[i] = row;for(int j = 0 ; j < ROW; ++j){double d =  getRandRate(rand_start,rand_end);int t = getOne(rates,RATELEN, d);if(t > 0)sNeedRemove.insert(t);row[j] = t;}}for(auto iter = sNeedRemove.begin() ; iter != sNeedRemove.end() ; ++iter){auto findIter = std::find(vBuPai.begin()  , vBuPai.end(), *iter);if(findIter != vBuPai.end()){vBuPai.erase(findIter);}}random_shuffle(vBuPai.begin() , vBuPai.end());//开始补齐for(int i = 0 ; i < LINE; ++i){for(int j = 0 ; j < ROW; ++j){if(line_arr[i][j] < 0){if(vBuPai.empty()){if(i == 0){buildFirstRow(line_arr[i],ROW, line_arr[i+1],ROW);}else{int t = getNotExistsNum(iAllElements,12,line_arr[i-1],ROW);line_arr[i][j] = t;}}else{auto iter = vBuPai.begin();line_arr[i][j] = *iter;vBuPai.erase(iter);}}}}show2(line_arr,ROW,LINE);}
void plan1(){double base_rate[14] ={0.02, //100.02, //J0.02,//K0.02,//Q0.02,//A0.01, //MOTO0.01,//CAR0.01,//N0.01,//YELLOW0.01,//RED0.01,//BLUE0.01,//WHITE0.005, //WILD0.001//SCATTER};double rates[RATELEN] = {0};rates[0] = 0.0;double sum = 0.0;for(int i =  0; i  < 14 ; ++i){sum += base_rate[i];rates[i+1]  = sum;}showarr(rates,RATELEN);for(int i = 0; i < 10; ++i){gen_arr(rates);}cout << "done" << endl;}
int main(int argc, char* argv[])
{using namespace std;plan1();return 0;
}

花花公子 243线SLOT相关推荐

  1. Flink线上问题: The assigned slot container_xxx was removed

    Flink线上问题: The assigned slot container_xxx was removed 客户现场使用Flink(on Yarn)进行数据抽取,Source是JDBC,Sink是K ...

  2. slot game 开发

    要学习slot的知识首先要了解slot的一些专业术语,下面我们就列举一些slot的专业术语并给大家一一详细说明. 现在大多数slot是三行五列的,我们就以三行五列,243lines的slot距离说明各 ...

  3. 福建工程学院计算机科学类投档线,2019年福建工程学院美术类本科专业投档分数线...

    福建工程学院2019年美术类本科专业录取情况 省份 科类 专业 计划 最高分 最低分 平均分 江苏 艺术综合 环境设计 5 247.2 241.2 244.6 视觉传达设计 3 244.2 240 2 ...

  4. 线上比赛中关于视觉AI组与信标组补充说明

    简 介: 本文给出了在第十六届全国大学生智能车竞赛中,线上比赛地区(广东省.山东省)AI视觉组以及信标组中补充的信息. 关键词: 智能车竞赛,AI视觉组,信标组 §01 AI视觉组   根据 第十六届 ...

  5. 内存地址 哪个程序_记一次排查线上程序内存的忽高忽低,又是大集合惹祸了...

    一:背景 1. 讲故事 昨天继续还技术债,优化一轮后的程序拉到线上后内存继续忽高忽低,低的时候20G,高的时候30G,过了一会又下降了几个G,毫无疑问,程序中有什么集合或者什么操作占用了大量内存,所以 ...

  6. Android驱动之 Linux Input子系统之TP——A/B(Slot)协议

    点击打开链接 将A/B协议这部分单独拿出来说一方面是因为这部分内容是比较容易忽视的,周围大多数用到input子系统的开发人员也不甚理解:另一方面是由于这部分知识一旦扩展到TP(触摸屏Touch Pan ...

  7. ArcGIS.Server.9.2.DotNet在ElementGraphicsLayer画点、线、折线、面、圆、矩形的代码

    ArcGIS.Server.9.2.DotNet在ElementGraphicsLayer画点.线.折线.面.圆.矩形的代码:   1public class AddTool:IMapServerTo ...

  8. 记一次排查线上程序内存的忽高忽低,又是大集合惹祸了

    一:背景 1. 讲故事 昨天继续还技术债,优化一轮后的程序拉到线上后内存继续忽高忽低,低的时候20G,高的时候30G,过了一会又下降了几个G,毫无疑问,程序中有什么集合或者什么操作占用了大量内存,所以 ...

  9. rsync实现负载均衡集群文件同步,搭建线上测试部署环境

    此次测试使用三台服务器,CentOS7(1511)版本: 192.168.254.1  web服务器+线上测试环境+源站 192.168.254.2  web服务器 192.168.254.3  we ...

  10. vue使用高德地图小demo(标记点,画线,3D,叠加图片图层)

    vue使用高德地图小demo(标记点,画线,3D) 这个模式是3D的,可以看到地图是带有一定的倾角的. 注意:3D模式下,是不能够将进行画线的,不能使用PathSimplifier,改成2D可以正常使 ...

最新文章

  1. PCB天线无线模组如何布局摆放?
  2. 简单的基于hash和hashchange的前端路由
  3. android版记账本
  4. 成功男士的健康心理特征
  5. SparkCore基础
  6. 【c语言】指针数组和数组指针-解释和用法
  7. Python爬取B站弹幕+Gephi梳理主线剧情
  8. NOIP2013TGDay1
  9. mrp手机qq2008下载-MRP格式的手机QQ2008软件介绍及如何正确安装MRPQQ2008挂Q版
  10. springcloud如何搭建支付宝pay-service微服务
  11. 计算机网络长度,以太网中mtu默认长度 你应该知道的计算机网络知识(2)
  12. 基于freeswitch1.6的IVR智能语音机器人交互逻辑lua脚本
  13. 电子书产品日趋丰富,科大讯飞智能办公本仍是理想之选
  14. 2023上海面料展览会
  15. 使用for循环打印空心菱形图案
  16. oracle10g centos 安装,Centos下静默安装oracle10g
  17. 领导问“有空吗”,老实人回“没空”被敲打,用万能话术进退自如
  18. Lytro In Matlab
  19. Extjs6问题——grid不显示数据
  20. 【OS】IO系统——设备管理

热门文章

  1. 判断邮箱正确的c语言代码,如何用c语言来识别电子邮箱是否正确
  2. ZYNQ的Linux Linaro系统镜像制作SD卡启动
  3. PPP PDP 及GPRS
  4. 代码review神器Upsource,让你快乐的进行CodeReview
  5. 联邦学习和去中心化训练--知识记录
  6. Unity 3D 如何获取鼠标移动事件
  7. 单元格下拉全选快捷键_复制全选快捷键是什么
  8. 不同局域网内进行网络连接的建立方法
  9. 随笔—我的大学,在人间1
  10. 腾讯云通信、网易云通信、极光IM、阿里百川、容云通信国内云通信抉择之路 看云通信市场风云与掌控力 带腾讯云通信实战代码demo