Randomely创建N个布尔变量的布尔函数

时间:2016-09-17 16:50:34

标签: function random boolean-logic discrete-mathematics

我想编写一个程序,用于randomely创建一个函数,该函数接收N个二进制值作为输入,并将它们映射到一个二进制值。天真的方法是创建所有2 ^(2 ^ N)个这样的函数,表示为真值表,并随机选择一个 - 但这对于大N来说是不切实际的。另外,因为在真值表中表示所选择的函数是记忆效率低下,最好将其表示为公式y = f(x1,x2,...,xN)。

谢谢!

1 个答案:

答案 0 :(得分:0)

假设我们有一个布尔值的数组x[1..n]。我们的想法是创建一个辅助伯努利分布b并按顺序应用andor,概率为50%。

1.  result:= true.
    b := Bernoulli(0.5).
2.  For i = 1 To n Do:
3.    If next(b)
        Then result := and(result, x[i])
        Else result := or(result, x[i])
4.  Return result
相关问题