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

我想要一个可以调用以随机truefalse每次调用的函数:

  randBoolean() // true

randBoolean() // false

randBoolean() // false

randBoolean() // true

如何返回随机布尔值?

回答:

您需要某种随机信息,并且根据其值,可以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

}

}

以上是 我怎样才能让函数随机返回true或false 的全部内容, 来源链接: utcz.com/qa/426533.html

回到顶部