【Golang语言社区】四川麻将随机初始化牌型结构
时间:2022-05-06
本文章向大家介绍【Golang语言社区】四川麻将随机初始化牌型结构,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package main
import (
"fmt"
"math/rand"
"time"
)
const (
NoHU = 0 //不胡
PingHU = 1 //平胡;四坎牌,加一对将,得一分。
DuiDuiHU = 2 //对对胡;每坎牌都是三张一样的牌,即111万、222条,得两分。
QiangGangHU = 3 //抢杠胡;它人杠的时候,抢牌胡,得两分。
QingYiSe = 4 //清一色;全手牌是一种花色,即123条、567条、234 条、888条、99条,得三分。
YaoJiuPai = 5 //幺九牌;每坎牌都是一或九,即123条、123万、789条、789万、99万,得三分。
QiDui = 6 //七对;胡牌的时候是七对牌,即11万、22万、99万、44筒、66筒、88筒、99筒,得三分。
QingQiDui = 7 //清七对;在七对的基础上,有两对牌是四张一样的。(注意:此四张牌并不是杠的牌) 即11万、11万、99万、44筒、66筒、88筒、99筒,得四分。
QiDui2 = 8 //清对;一种花色的大对子。即111万、444万、222万、999万、66万,得四分。
JiangDui = 9 //将对;即二、五、八的大对子,即222万 555万 888万 222条 55筒,的四分。
TianHU = 10 //天胡;即刚码好牌就自然成胡,得8分。
DiHU = 11 //地胡;即刚打第一张牌就成胡,得8分。
)
var (
SiChuangMJArr = []int{
101, 102, 103, 104, 105, 106, 107, 108, 109, //#万
101, 102, 103, 104, 105, 106, 107, 108, 109,
101, 102, 103, 104, 105, 106, 107, 108, 109,
101, 102, 103, 104, 105, 106, 107, 108, 109,
201, 202, 203, 204, 205, 206, 207, 208, 209, //#饼
201, 202, 203, 204, 205, 206, 207, 208, 209,
201, 202, 203, 204, 205, 206, 207, 208, 209,
201, 202, 203, 204, 205, 206, 207, 208, 209,
301, 302, 303, 304, 305, 306, 307, 308, 309, //#条
301, 302, 303, 304, 305, 306, 307, 308, 309,
301, 302, 303, 304, 305, 306, 307, 308, 309,
301, 302, 303, 304, 305, 306, 307, 308, 309,
}
)
func RandInt64(min, max int64) int64 {
if min >= max || min == 0 || max == 0 {
return max
}
return rand.Int63n(max-min) + min
}
// 初始化发牌
func initFaPai() {
FaPaiCiShu := 53 // 初始化牌型 为循环随机53次;可能实际要大于53次,随机的次数在具体根据实际情况
SuiJiMap := make(map[int]int) // 记录随机数
for i := 0; i < FaPaiCiShu; i++ {
WeiZhi := int(RandInt64(1, 108))
//WeiZhi := rand.Intn(107)
_, ok := SuiJiMap[WeiZhi]
if ok {
fmt.Println("随机重复:", WeiZhi)
FaPaiCiShu++
continue
}
fmt.Println(WeiZhi)
SuiJiMap[WeiZhi] = WeiZhi
}
fmt.Println("循环次数", FaPaiCiShu)
}
func init() {
fmt.Println("entry init")
t1 := time.Now()
initFaPai()
elapsed := time.Since(t1)
fmt.Println("App elapsed: ", elapsed)
return
}
func main() {
return
}
输出结果
entry init
93
35
103
42
23
随机重复: 103
97
随机重复: 42
76
107
2
102
59
95
55
36
87
54
随机重复: 36
19
90
68
30
66
62
77
52
41
46
随机重复: 59
79
随机重复: 90
随机重复: 59
24
22
85
89
16
7
随机重复: 46
随机重复: 35
58
100
随机重复: 77
37
105
94
随机重复: 58
随机重复: 93
28
70
随机重复: 2
45
64
43
17
27
随机重复: 90
67
10
随机重复: 105
随机重复: 35
91
随机重复: 103
随机重复: 76
随机重复: 105
75
3
随机重复: 37
86
99
随机重复: 2
80
循环次数 73
App elapsed: 1ms
- 使用Octave来学习Machine Learning(二)
- RESTful API的十个最佳实践1. 使用名词而不是动词 2. Get方法和查询参数不应该改变资源状态3. 使用名词的复数形式 4. 为关系使用子资源 5. 使用HTTP头决定序列化格式 6. 使
- MYSQL数据库设计的一些小技巧[转载]
- 在ASP.NET 5应用程序中的跨域请求功能详解什么是“同域”添加CORS包在应用程序中配置CORSCORS策略选项跨域请求中的凭据设置先行请求的过期时间CORS是怎么样工作的先行请求
- 有趣的算法(八) ——红黑树插入算法
- 使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面何时使用Donut CachingDonut Caching 的Nuget 包Donut Ho
- 有趣的算法(九) ——蛇形数组
- 有趣的算法(十一) ——分治法:快速求最值
- ASP.NET AJAX(3)__UpdatePanel
- 正则表达式学习笔记
- PHP10个实用函数
- ASP.NET AJAX(2)__ASP.NET 2.0 AJAX Extensions
- Android利用V4包中的SwipeRefreshLayout实现上拉加载
- 在Scala项目中使用Spring Cloud
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 图像处理笔记(7)---- OpenCV 绘制无填充矩形
- 图像处理笔记(8)---- OpenCV 获取追踪对象的HSV值
- (数据科学学习手札95)elyra——jupyter lab平台最强插件集
- Python 序列化/反序列化自定义类型
- Windows10下使用VS2017编译和使用yaml-cpp库
- CentOS7下编译yaml-cpp库
- SAP Spartacus CurrentProductService返回的null对象
- SAP Spartacus产品明细页面用Observable显示产品名称
- 关于rxjs里operators filter和map的详细讨论
- 用代码查看SAP Spartacus购物车内的行项目
- rxjs的map和switchMap在SAP Spartacus中的应用
- 用代码查看SAP Spartacus购物车内的行项目
- rxjs fromEvent的用法
- Python2和Python3的区别简单总结
- Django操作数据库