作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我希望从 1-6 中选择一个随机数,但是如果例如程序选择了 1,我想确保在选择 2-6 之前不会再次使用它。我想这样做是为了有机会通过所有选项,而不是连续 2 次或 3 次使用相同的选项,因为只有 6 个选项。有什么想法吗?
//choose random number for recipe
rand.Seed(time.Now().UTC().UnixNano())
myrand := random(1, 6)
fmt.Println(myrand)
...
处理它的函数
//random number function
func random(min, max int) int {
return rand.Intn(max-min) + min
我的程序中每次运行都使用 myrand 的部分在 if 语句中使用,并与当天将要采摘的食谱相关联
//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) 是什么?
最佳答案
您可以使用 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)
以获得六个新号码。
关于go - 想要选择一个随机数并且在所有数字都通过之前不要再次选择它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35262274/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!