所以我创建了一个程序来帮助我决定要玩哪个游戏。在开始我的问题之前,让我告诉你我的代码:
package main
import (
"fmt"
"strconv"
"time"
)
func main() {
isArray := [10]string{"Paladins", "Overwatch", "CS:GO", "Tanki", "Left 4 Dead", "Rocket League", "Call Of Duty : AW", "Portal", "Star Citizen", "Star Wars : Battlefront"}
fmt.Print("0,1,2,3,4,5,6,7,8,9 := ")
var (
va string
ar string
)
fmt.Scanln(&va)
i, _ := strconv.Atoi(va)
fmt.Print("You Should Play : ")
fmt.Print(isArray[i], "\n")
fmt.Print("[Y/N] := ")
fmt.Scanln(&ar)
if ar != "N" || ar != "n" {
fmt.Print("OK")
}
time.Sleep(3 * time.Second)
}
所以当我已经知道哪个号码会触发游戏时,问题就开始了,如果我使用它两次。所以我试图让字符串随机,就像我每次使用它时一样,我怎么能这样做?
答案 0 :(得分:2)
package main
import (
"fmt"
"math/rand"
"time"
)
func shuffle(src []string) []string {
final := make([]string, len(src))
rand.Seed(time.Now().UTC().UnixNano())
perm := rand.Perm(len(src))
for i, v := range perm {
final[v] = src[i]
}
return final
}
答案 1 :(得分:0)
嗯,从字面上看你的问题为什么不用rand.Intn()
选择随机数并打印游戏而不是让用户选择一个数字?
isArray := [10]string{"Paladins", "Overwatch", "CS:GO", "Tanki", "Left 4 Dead", "Rocket League", "Call Of Duty : AW", "Portal", "Star Citizen", "Star Wars : Battlefront"}
n := rand.Intn(9)
fmt.Printf("You Should Play : %s\n", isArray[n])
但是如果你想为了它而在数组中重排字符串,那么你就可以这样做:
// Shuffle array in place
l := len(isArray)-1
for i := 0; i <=l; i++ {
n := rand.Intn(l)
// swap
x := isArray[i]
isArray[i] = isArray[n]
isArray[n] = x
}
这应该是O(n),尽管我不确定Intn
的复杂性。如果你真的想要花哨,你可以:
randomArray
),包含isArray
中的随机数和元素位置。 isArray
的元素,但由randomArray
答案 2 :(得分:0)
-Dapplicationame.some.properties.vmarg=PathToProperties