为了账号安全,请及时绑定邮箱和手机立即绑定

想要选择一个随机数并且在所有数字都通过之前不要再次选择它

想要选择一个随机数并且在所有数字都通过之前不要再次选择它

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 关注
  • 220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信