【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
- 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 数组属性和方法
- python在Scikit-learn中用决策树和随机森林预测NBA获胜者
- R语言:用R语言填补缺失的数据
- R语言如何和何时使用glmnet岭回归
- r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
- cmd里如何查看历史命令并执行
- akka-typed(10) - event-sourcing, CQRS实战
- 【每日一题】37. Sudoku Solver
- A quick introduction to innodb_ruby (2.对innodb_ruby的简单介绍)
- Webkit 内核初探
- 配置跨域后,框架帮我们做了什么?
- python应用(1):安装与使用
- TCP粘包和拆包
- 性能测试必备命令(1)- free
- 记一次有趣的挖矿病毒
- 性能测试必备知识(10)- Linux 是怎么管理内存的?