gpt4 book ai didi

go - 在Go中多次洗牌

转载 作者:行者123 更新时间:2023-12-03 10:08:35 28 4
gpt4 key购买 nike

我是新手,正在尝试通过练习来学习,包括建立一些卡片功能。我有一个可以洗牌的功能。如何编写函数,以便可以将同一副牌n洗牌一次?我必须为此使用指针吗?谢谢。

package main

import (
"math/rand"
"time"
)

type Suit struct {
label string
value int
}

type Rank struct {
label string
value int
}

type Card struct {
Suit
Rank
}

type Deck []Card

func getPerm(n int) []int {
r := rand.New(rand.NewSource(time.Now().Unix()))
return r.Perm(n)
}

func (d Deck) shuffle() Deck {
finalDeck := Deck{}

perm := getPerm(len(d))

for _, j := range perm {
finalDeck = append(finalDeck, d[j])
}

return finalDeck
}

最佳答案

假设您想在适当位置随机播放卡座,则可以利用标准库rand Shuffle
为此,您需要提供平台的长度以及交换功能,以便随机播放功能能够实际随机播放平台。
我们还可以添加一个for循环,以增加随机播放次数。
这可以通过这样做

func (d *Deck) shuffleN(n int) {
for k := 0; k < n; k++ {
rand.Shuffle(len(d), func(i, j int) {
d[i], d[j] = d[j], d[i]
})
}
}

关于go - 在Go中多次洗牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65572019/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com