栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我怎样才能让函数随机返回true或false

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我怎样才能让函数随机返回true或false

您需要某种随机信息,并且根据其值,可以

true
在一半的可能情况下返回它,而
false
在另一半情况下可以返回。

使用一个非常简单的例子

rand.Float32()
中的
math/rand
包:

func rand1() bool {    return rand.Float32() < 0.5}

不要忘记使用以下方法正确

math/rand
打包程序包,以使其在每次运行的应用程序中都不同
rand.Seed()

func main() {    rand.Seed(time.Now().UnixNano())    fmt.Println(rand1())}

这是在的doc文件中提到的

math/rand

如果每次运行需要不同的行为,请使用种子函数初始化默认的源。

如果不设置种子,则每次运行应用程序时都会返回相同的伪随机信息。

一些变化:

func rand2() bool {    return rand.Int31()&0x01 == 0}func rand3() bool {    return rand.Intn(2) == 0}

一个有趣的解决方案,无需使用该

math/rand
软件包。它使用以下
select
语句:

func rand9() bool {    c := make(chan struct{})    close(c)    select {    case <-c:        return true    case <-c:        return false    }}

说明:

select
语句从可以继续进行而不会阻塞的情况中选择一种 随机
情况。由于可以立即进行从封闭渠道的接收,因此将随机选择2种情况之一,返回
true
false
。请注意,但这并不是完全随机的,因为这不是该
select
语句的要求。

通道也可以移动到全局变量,因此无需在每次调用中创建一个通道或关闭一个通道:

var c = make(chan struct{})func init() {    close(c)}func rand9() bool {    select {    case <-c:        return true    case <-c:        return false    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/382070.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号