【Golang語言社區】四川麻將隨機初始化牌型結構

  1. package main
    app


  2. import (
    ide

  3.         "fmt"
    ui

  4.         "math/rand"
    spa

  5.         "time"
    orm

  6. )
    ci



  7. const (
    it

  8.         NoHU        = 0  //不胡
    form

  9.         PingHU      = 1  //平胡;四坎牌,加一對將,得一分。
    class

  10.         DuiDuiHU    = 2  //對對胡;每坎牌都是三張同樣的牌,即111萬、222條,得兩分。
    import

  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  //將對;即2、5、八的大對子,即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

相關文章
相關標籤/搜索