From da7f8895a66072c33f26f1101cfb80814f958d37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E5=8B=87?= Date: Wed, 30 Aug 2023 14:44:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E4=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/imserver/constant.go | 1 + server/imserver/guildmgr.go | 20 ++++++++------------ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/server/imserver/constant.go b/server/imserver/constant.go index 32a7d8dd..d37db24d 100644 --- a/server/imserver/constant.go +++ b/server/imserver/constant.go @@ -45,6 +45,7 @@ const ( // im server guild const ( + RandomGuildCount = 10 MaxMembers = 10 MaxPendingReqs = 10 DefaultLogs = 20 diff --git a/server/imserver/guildmgr.go b/server/imserver/guildmgr.go index dea3591a..b78fd239 100644 --- a/server/imserver/guildmgr.go +++ b/server/imserver/guildmgr.go @@ -432,16 +432,9 @@ func (gm *GuildMgr) SearchGuilds(keyword string) []Guild { return results } -func shuffleGuildIds(slice []*Guild) { - for i := len(slice) - 1; i > 0; i-- { - j := rand.Intn(i + 1) - slice[i], slice[j] = slice[j], slice[i] - } -} - // RandomGuilds 随机10个公会 func (gm *GuildMgr) RandomGuilds() []Guild { - guildCount := 10 + guildCount := RandomGuildCount count := len(gm.Guilds) if count <= guildCount { guildCount = count @@ -451,12 +444,15 @@ func (gm *GuildMgr) RandomGuilds() []Guild { for _, guild := range gm.Guilds { guildSlice = append(guildSlice, guild) } - shuffleGuildIds(guildSlice) - randomlySelectedGuilds := guildSlice[:guildCount] + for i := 0; i < guildCount; i++ { + j := rand.Intn(len(guildSlice)) + guildSlice[i], guildSlice[j] = guildSlice[j], guildSlice[i] + } + var results []Guild - for _, guild := range randomlySelectedGuilds { - results = append(results, *gm.Guilds[guild.GuildId]) + for i := 0; i < guildCount; i++ { + results = append(results, *guildSlice[i]) } return results }