首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >想要选择一个随机数,直到所有的数字都通过时,才能再次选择它。

想要选择一个随机数,直到所有的数字都通过时,才能再次选择它。
EN

Stack Overflow用户
提问于 2016-02-08 04:18:29
回答 1查看 63关注 0票数 1

我希望从1-6中选择一个随机数,但是如果1是由程序选择的,我想确保它在2-6被选中之前不会再次使用。我想这样做是为了有机会通过所有的选项,而不是有相同的选项2或可能连续3次,因为只有6个选项。有什么想法吗?

代码语言:javascript
复制
//choose random number for recipe
rand.Seed(time.Now().UTC().UnixNano())
myrand := random(1, 6)
fmt.Println(myrand)

..。

处理它的函数。

代码语言:javascript
复制
//random number function
func random(min, max int) int {
    return rand.Intn(max-min) + min

}

我的程序中使用myrand的部分将在if语句中使用,并与当天将选择的菜谱绑定在一起。

代码语言:javascript
复制
//choose random number for recipe
rand.Seed(time.Now().UTC().UnixNano())
myrand := random(1, 6)
fmt.Println(myrand)

//test below of random replacement
list := rand.Perm(6)
for i, _ := range list {
    fmt.Printf("%d\n", list[i]+1)
}

//logic for recipe to choose
if 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)是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-08 04:23:53

您可以使用rand.Perm(6),然后循环查看结果。

例如,下面是以随机顺序打印数字1-6的代码,没有重复:

代码语言:javascript
复制
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)以获得6个新号码。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35262274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档