我希望從 1-6 中選擇一個(gè)隨機(jī)數(shù),但是如果程序選擇了例如 1,我想確保在選擇 2-6 之前不會(huì)再次使用它。我想這樣做是為了有機(jī)會(huì)瀏覽所有選項(xiàng),而不是連續(xù) 2 次或 3 次使用相同的選項(xiàng),因?yàn)橹挥?6 個(gè)選項(xiàng)。請(qǐng)問(wèn)有什么想法嗎?//choose random number for reciperand.Seed(time.Now().UTC().UnixNano())myrand := random(1, 6)fmt.Println(myrand)...處理它的函數(shù)//random number functionfunc random(min, max int) int { return rand.Intn(max-min) + min}我的程序中每次運(yùn)行都使用 myrand 的部分在 if 語(yǔ)句中使用,并與當(dāng)天選擇的配方相關(guān)聯(lián)//choose random number for reciperand.Seed(time.Now().UTC().UnixNano())myrand := random(1, 6)fmt.Println(myrand)//test below of random replacementlist := rand.Perm(6)for i, _ := range list { fmt.Printf("%d\n", list[i]+1)}//logic for recipe to chooseif myrand == 1 { fmt.Println(1) printRecipeOfTheDay(recipe1)} else if myrand == 2 { fmt.Println(2) printRecipeOfTheDay(recipe2)} else if myrand == 3 { fmt.Println(3) printRecipeOfTheDay(recipe3)} else if myrand == 4 { fmt.Println(4)}}我想知道我是否做錯(cuò)了什么?我不確定如何在每次運(yùn)行時(shí)使用該列表來(lái)生成一個(gè)新數(shù)字 (myrand),并且程序?qū)⒛軌蛴涀∩洗芜\(yùn)行時(shí)的最后一個(gè)數(shù)字 (myrand) 是多少?
1 回答

拉莫斯之舞
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以使用rand.Perm(6)然后遍歷結(jié)果。
例如,這里是按隨機(jī)順序打印數(shù)字 1-6 的代碼,沒(méi)有重復(fù):
package main
import "fmt"
import "math/rand"
func main(){
list := rand.Perm(6);
for i, _ := range list {
fmt.Printf("%d\n", list[i]+1);
}
}
請(qǐng)注意,我們已將 1 添加到所有內(nèi)容中,因?yàn)镻erm(6)返回 0-5 而您需要 1-6。用完所有六個(gè)號(hào)碼后,rand.Perm(6)再次呼叫六個(gè)新號(hào)碼。
- 1 回答
- 0 關(guān)注
- 262 瀏覽
添加回答
舉報(bào)
0/150
提交
取消