【Golang语言社区】四川麻将随机初始化牌型结构

  1. package main


  2. import (

  3.         "fmt"

  4.         "math/rand"

  5.         "time"

  6. )



  7. const (

  8.         NoHU        = 0  //不胡

  9.         PingHU      = 1  //平胡;四坎牌,加一对将,得一分。

  10.         DuiDuiHU    = 2  //对对胡;每坎牌都是三张一样的牌,即111万、222条,得两分。

  11.         QiangGangHU = 3  //抢杠胡;它人杠的时候,抢牌胡,得两分。

  12.         QingYiSe    = 4  //清一色;全手牌是一种花色,即123条、567条、234 条、888条、99条,得三分。

  13.         YaoJiuPai   = 5  //幺九牌;每坎牌都是一或九,即123条、123万、789条、789万、99万,得三分。

  14.         QiDui       = 6  //七对;胡牌的时候是七对牌,即11万、22万、99万、44筒、66筒、88筒、99筒,得三分。

  15.         QingQiDui   = 7  //清七对;在七对的基础上,有两对牌是四张一样的。(注意:此四张牌并不是杠的牌) 即11万、11万、99万、44筒、66筒、88筒、99筒,得四分。

  16.         QiDui2      = 8  //清对;一种花色的大对子。即111万、444万、222万、999万、66万,得四分。

  17.         JiangDui    = 9  //将对;即二、五、八的大对子,即222万 555万 888万 222条 55筒,的四分。

  18.         TianHU      = 10 //天胡;即刚码好牌就自然成胡,得8分。

  19.         DiHU        = 11 //地胡;即刚打第一张牌就成胡,得8分。

  20. )



  21. var (

  22.         SiChuangMJArr = []int{

  23.                 101, 102, 103, 104, 105, 106, 107, 108, 109, //#万

  24.                 101, 102, 103, 104, 105, 106, 107, 108, 109,

  25.                 101, 102, 103, 104, 105, 106, 107, 108, 109,

  26.                 101, 102, 103, 104, 105, 106, 107, 108, 109,

  27.                 201, 202, 203, 204, 205, 206, 207, 208, 209, //#饼

  28.                 201, 202, 203, 204, 205, 206, 207, 208, 209,

  29.                 201, 202, 203, 204, 205, 206, 207, 208, 209,

  30.                 201, 202, 203, 204, 205, 206, 207, 208, 209,

  31.                 301, 302, 303, 304, 305, 306, 307, 308, 309, //#条

  32.                 301, 302, 303, 304, 305, 306, 307, 308, 309,

  33.                 301, 302, 303, 304, 305, 306, 307, 308, 309,

  34.                 301, 302, 303, 304, 305, 306, 307, 308, 309,

  35.         }

  36. )









  37. func RandInt64(min, max int64) int64 {

  38.         if min >= max || min == 0 || max == 0 {

  39.                 return max

  40.         }

  41.         return rand.Int63n(max-min) + min

  42. }




  43.      

  44.         

  45.        





  46. // 初始化发牌

  47. func initFaPai() {


  48.         FaPaiCiShu := 53              // 初始化牌型 为循环随机53次;可能实际要大于53次,随机的次数在具体根据实际情况

  49.         SuiJiMap := make(map[int]int) // 记录随机数

  50.         for i := 0; i < FaPaiCiShu; i++ {

  51.                 WeiZhi := int(RandInt64(1, 108))

  52.                 //WeiZhi := rand.Intn(107)

  53.                 _, ok := SuiJiMap[WeiZhi]

  54.                 if ok {

  55.                         fmt.Println("随机重复:", WeiZhi)

  56.                         FaPaiCiShu++

  57.                         continue

  58.                 }

  59.                 fmt.Println(WeiZhi)

  60.                 SuiJiMap[WeiZhi] = WeiZhi

  61.         }


  62.         fmt.Println("循环次数", FaPaiCiShu)

  63. }


  64. func init() {

  65.         fmt.Println("entry init")

  66.    

  67.         t1 := time.Now()

  68.         initFaPai()

  69.       

  70.         elapsed := time.Since(t1)

  71.         fmt.Println("App elapsed: ", elapsed)

  72.         return

  73. }


  74. func main() {


  75.         return

  76. }


复制代码

输出结果

  1. entry init

  2. 93

  3. 35

  4. 103

  5. 42

  6. 23

  7. 随机重复: 103

  8. 97

  9. 随机重复: 42

  10. 76

  11. 107

  12. 2

  13. 102

  14. 59

  15. 95

  16. 55

  17. 36

  18. 87

  19. 54

  20. 随机重复: 36

  21. 19

  22. 90

  23. 68

  24. 30

  25. 66

  26. 62

  27. 77

  28. 52

  29. 41

  30. 46

  31. 随机重复: 59

  32. 79

  33. 随机重复: 90

  34. 随机重复: 59

  35. 24

  36. 22

  37. 85

  38. 89

  39. 16

  40. 7

  41. 随机重复: 46

  42. 随机重复: 35

  43. 58

  44. 100

  45. 随机重复: 77

  46. 37

  47. 105

  48. 94

  49. 随机重复: 58

  50. 随机重复: 93

  51. 28

  52. 70

  53. 随机重复: 2

  54. 45

  55. 64

  56. 43

  57. 17

  58. 27

  59. 随机重复: 90

  60. 67

  61. 10

  62. 随机重复: 105

  63. 随机重复: 35

  64. 91

  65. 随机重复: 103

  66. 随机重复: 76

  67. 随机重复: 105

  68. 75

  69. 3

  70. 随机重复: 37

  71. 86

  72. 99

  73. 随机重复: 2

  74. 80

  75. 循环次数 73

  76. App elapsed:  1ms


上一篇:输入大小写字母或数字输出随机0-99数字


下一篇:ES6新特性之模板字符串