亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

想要選擇一個隨機數并且在所有數字都通過之前不要再次選擇它

想要選擇一個隨機數并且在所有數字都通過之前不要再次選擇它

Go
肥皂起泡泡 2021-12-07 19:32:55
我希望從 1-6 中選擇一個隨機數,但是如果程序選擇了例如 1,我想確保在選擇 2-6 之前不會再次使用它。我想這樣做是為了有機會瀏覽所有選項,而不是連續 2 次或 3 次使用相同的選項,因為只有 6 個選項。請問有什么想法嗎?//choose random number for reciperand.Seed(time.Now().UTC().UnixNano())myrand := random(1, 6)fmt.Println(myrand)...處理它的函數//random number functionfunc random(min, max int) int {    return rand.Intn(max-min) + min}我的程序中每次運行都使用 myrand 的部分在 if 語句中使用,并與當天選擇的配方相關聯//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)}}我想知道我是否做錯了什么?我不確定如何在每次運行時使用該列表來生成一個新數字 (myrand),并且程序將能夠記住上次運行時的最后一個數字 (myrand) 是多少?
查看完整描述

1 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

您可以使用rand.Perm(6)然后遍歷結果。


例如,這里是按隨機順序打印數字 1-6 的代碼,沒有重復:


package main

import "fmt"

import "math/rand"


func main(){

    list := rand.Perm(6);

    for i, _ := range list {

        fmt.Printf("%d\n", list[i]+1);

    }

}

請注意,我們已將 1 添加到所有內容中,因為Perm(6)返回 0-5 而您需要 1-6。用完所有六個號碼后,rand.Perm(6)再次呼叫六個新號碼。


查看完整回答
反對 回復 2021-12-07
  • 1 回答
  • 0 關注
  • 250 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號