随机数优化

This commit is contained in:
hahwu 2026-02-09 14:30:56 +08:00
parent f42dd2dd95
commit b66bfa0209
4 changed files with 29 additions and 10 deletions

View File

@ -1,6 +1,7 @@
package game package game
import ( import (
"server/game/mod/card"
"server/game/mod/chess" "server/game/mod/chess"
"server/game/mod/decorate" "server/game/mod/decorate"
limitedTimeEvent "server/game/mod/limited_time_event" limitedTimeEvent "server/game/mod/limited_time_event"
@ -17,3 +18,7 @@ func (p *Player) GetDecorateMod() *decorate.Decorate {
func (p *Player) GetLimitEventMod() *limitedTimeEvent.LimitedTimeEventMod { func (p *Player) GetLimitEventMod() *limitedTimeEvent.LimitedTimeEventMod {
return p.PlayMod.getLimitedTimeEventMod() return p.PlayMod.getLimitedTimeEventMod()
} }
func (p *Player) GetCardMod() *card.CardMod {
return p.PlayMod.getCardMod()
}

View File

@ -1,5 +1,7 @@
package GoUtil package GoUtil
import "math/rand"
func RandNum(start int, end int) int { func RandNum(start int, end int) int {
if start > end { if start > end {
return 0 return 0
@ -7,5 +9,5 @@ func RandNum(start int, end int) int {
if start == end { if start == end {
return start return start
} }
return start + GetRand().Intn(end-start+1) return start + rand.Intn(end-start+1)
} }

View File

@ -2,6 +2,7 @@ package GoUtil
import ( import (
"fmt" "fmt"
"math/rand"
"reflect" "reflect"
"server/game/mod/item" "server/game/mod/item"
"sort" "sort"
@ -51,7 +52,7 @@ func RandPopSlice(slice []int) ([]int, int) {
if slen == 0 { if slen == 0 {
return slice, -1 return slice, -1
} }
Id := GetRand().Intn(slen) Id := rand.Intn(slen)
Val := slice[Id] Val := slice[Id]
Slice2 := append(slice[0:Id], slice[Id+1:]...) Slice2 := append(slice[0:Id], slice[Id+1:]...)
return Slice2, Val return Slice2, Val
@ -62,7 +63,7 @@ func RandSlice(slice []int) int {
if slen == 0 { if slen == 0 {
return 0 return 0
} }
Id := GetRand().Intn(slen) Id := rand.Intn(slen)
return slice[Id] return slice[Id]
} }
@ -71,7 +72,7 @@ func RandItem(slice []*item.Item) *item.Item {
if slen == 0 { if slen == 0 {
return nil return nil
} }
Id := GetRand().Intn(slen) Id := rand.Intn(slen)
return slice[Id] return slice[Id]
} }
@ -84,7 +85,7 @@ func RandSliceNum(s []int, num int) []int {
} }
for i := 0; i < num; i++ { for i := 0; i < num; i++ {
Id := GetRand().Intn(len(slice)) Id := rand.Intn(len(slice))
r = append(r, slice[Id]) r = append(r, slice[Id])
slice = append(slice[0:Id], slice[Id+1:]...) slice = append(slice[0:Id], slice[Id+1:]...)
} }
@ -100,7 +101,7 @@ func RandSliceNum2(s []interface{}, num int) []interface{} {
} }
for i := 0; i < num; i++ { for i := 0; i < num; i++ {
Id := GetRand().Intn(len(slice)) Id := rand.Intn(len(slice))
r = append(r, slice[Id]) r = append(r, slice[Id])
slice = append(slice[0:Id], slice[Id+1:]...) slice = append(slice[0:Id], slice[Id+1:]...)
} }
@ -116,7 +117,7 @@ func RandSliceNumNonAdjacent(s []int, num int) []int {
sort.Ints(slice) sort.Ints(slice)
result := make([]int, 0, num) result := make([]int, 0, num)
for len(result) < num { for len(result) < num {
Id := GetRand().Intn(len(slice)) Id := rand.Intn(len(slice))
result = append(result, slice[Id]) result = append(result, slice[Id])
slice = SubAdjacentElemSlice(slice, Id) slice = SubAdjacentElemSlice(slice, Id)
} }
@ -138,7 +139,7 @@ func RandStringSlice(slice []string) string {
if slen == 0 { if slen == 0 {
return "" return ""
} }
Id := GetRand().Intn(slen) Id := rand.Intn(slen)
return slice[Id] return slice[Id]
} }
@ -335,7 +336,7 @@ func PopStringArray(s []string) (string, []string) {
func ShuffleStringArray(s []string) []string { func ShuffleStringArray(s []string) []string {
r := make([]string, len(s)) r := make([]string, len(s))
perm := GetRand().Perm(len(s)) perm := rand.Perm(len(s))
for i, v := range perm { for i, v := range perm {
r[v] = s[i] r[v] = s[i]
} }
@ -344,7 +345,7 @@ func ShuffleStringArray(s []string) []string {
func ShuffleArray(s []int) []int { func ShuffleArray(s []int) []int {
r := make([]int, len(s)) r := make([]int, len(s))
perm := GetRand().Perm(len(s)) perm := rand.Perm(len(s))
for i, v := range perm { for i, v := range perm {
r[v] = s[i] r[v] = s[i]
} }

View File

@ -78,3 +78,14 @@ func TestFixUserData(t *testing.T) {
} }
log.Debug("All accounts fixed") log.Debug("All accounts fixed")
} }
func TestRandInt(t *testing.T) {
p1 := new(game.Player)
p1.InitPlayer("3625212")
CardMod := p1.GetCardMod()
CardMod.CardLimit = true
for i := 0; i < 20; i++ {
cardid, _ := CardMod.OpenCardPack(5)
log.Debug("cardid is %d", cardid)
}
}