当前位置: 首页 > 面试题库 >

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

巫研
2023-03-14
问题内容

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

  randBoolean() // true
  randBoolean() // false
  randBoolean() // false
  randBoolean() // true

如何返回随机布尔值?


问题答案:

您需要某种随机信息,并且根据其值,可以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种情况之一,返回truefalse。请注意,但这并不是完全随机的,因为这不是该select语句的要求。

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

var c = make(chan struct{})

func init() {
    close(c)
}

func rand9() bool {
    select {
    case <-c:
        return true
    case <-c:
        return false
    }
}


 类似资料:
  • 一种通用方法,可以返回两个参数之间的随机整数,就像ruby使用时所做的那样。 有什么建议吗?

  • 如果我的问题看起来很长,我道歉。我会尽量简明扼要。 问题:编写一个程序,将以千克为单位的估算重量转换为磅。如果用户输入负值,程序应要求玩家重新输入数字。 我创建了三个函数。第一个函数-返回玩家输入第二个函数-返回以磅为单位的权重第三个函数-如果权重为正,返回以磅为单位的值,或者如果值为负,要求另一个输入。 如果相同的值为正数,我的程序将返回正确的值。然而,当我输入一个负浮点数时,我的程序将永远打印

  • 我如何让Python完成这项任务? 每10秒,X次?

  • 问题内容: 我需要创建一个 Java 方法以返回或随机返回。我怎样才能做到这一点? 问题答案: 该类已经具有此功能: 但是,每次需要随机布尔值时始终创建一个新实例并不高效。相反,请在您的类中创建需要随机布尔值的type属性,然后为每个新的随机布尔值使用该实例:

  • 有什么方法可以简化这段代码吗?我正好有一个白色的一块,想要得到它的位置 代码: 瓦片类: 件类:

  • 在GATT之前,createRfcomSocketToService记录,createInsecureRfcomSocketToService记录 方法可以制作配对设备, 但是GATT对配对设备没有选择,只能使用BluetoothDevice.connectGatt(...) 我想做一个配对设备,如果它已经连接。 thx.