您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

您需要某种随机信息,并且根据其值,可以true在一半的可能情况下返回它,而false在另一半情况下可以返回。

使用一个非常简单的例子rand.Float32()中的math/rand包:

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

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种情况之一,返回truefalse。请注意,但这并不是完全随机的,因为这不是该select语句的要求。

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

var c = make(chan struct{})

func init() {
    close(c)
}

func rand9() bool {
    select {
    case <-c:
        return true
    case <-c:
        return false
    }
}
其他 2022/1/1 18:18:02 有717人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶