- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在以下情况下,如何确定函数返回 0 或 1 的概率:
Let the
function_A
return 0 with probability 40% and 1 with probability 60%. Generate afunction_B
with probabilities 50-50 using onlyfunction_A
only.
我想到了以下几点:
function_B()
{
int result1=function_A();
int result2=function_A();
//two times 40% would result in 16% and 40%+60% would be 24%... two times 60% would be 36%
}
什么组合可以得到 50-50?
最佳答案
这是一个经典的概率谜题,据我所知,仅调用两次函数是无法做到这一点的。但是,您可以通过预期 的函数调用次数来完成此操作。
观察结果是,如果您有一枚有偏差的硬币,正面朝上的概率为 p,并且如果您抛硬币两次,则:
现在,假设您反复掷两枚硬币,直到它们出现不同的值。如果发生这种情况,第一枚硬币正面朝上的概率是多少?好吧,如果我们应用贝叶斯定律,我们就明白了
P(第一枚硬币正面|两枚硬币不同)= P(两枚硬币不同|第一枚硬币正面)P(第一枚硬币正面)/P(两枚硬币不同)
第一枚硬币正面朝上的概率是 p,因为任何一次抛硬币正面朝上的概率都是 p。假设第一枚硬币是正面,两枚硬币不同的概率是第二枚硬币出现反面的概率,即 (1 - p)。最后,两个硬币不同的概率是 2p(1-p),因为如果您查看上面的概率表,就会发现这有两种可能发生的方式,每种方式的概率都是 p(1-p)。简化,我们明白了
P(第一枚硬币正面 | 两枚硬币都不同)= p (1-p)/(2p(1-p)) = 1/2。
但如果硬币不同,这就是第一个硬币出现反面的概率吗?好吧,这与当两枚硬币都不同时第一枚硬币没有正面朝上的概率相同,即 1 - 1/2 = 1/2。
换句话说,如果你不断地抛掷两枚硬币直到它们出现不同的值,然后取你抛出的第一枚硬币的值,你最终会从有偏见的硬币中获得公平的硬币!
在 C 中,这可能看起来像这样:
bool FairCoinFromBiasedCoin() {
bool coin1, coin2;
do {
coin1 = function_A();
coin2 = function_A();
} while (coin1 == coin2);
return coin1;
}
这可能看起来效率低下,但实际上并没有那么糟糕。它在每次迭代中终止的概率是 2p(1 - p)。按照预期,这意味着我们需要 1/(2p(1-p)) 次迭代才能终止此循环。对于 p = 40%,这是 1/(2 x 0.4 x 0.6) = 1/0.48 ~= 2.083 次迭代。每次迭代抛两个硬币,因此我们需要抛掷大约 4.16 次硬币才能获得公平的抛掷。
希望这对您有所帮助!
关于C拼图: Make a fair coin from a biased coin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5429045/
我想建立一个模型来预测输入信号的 future 响应,我的网络架构是[3,5,1]: 3 个输入, 隐藏层有 5 个神经元,并且 输出层有 1 个神经元。 我的问题是: 我们应该为每个隐藏层和输出层设
The flexbox layout algorithm is direction-agnostic as opposed to the block layout, which is vertical
系统信息 Colab tensorflow 2.2.0 描述当前的行为: 当我尝试解决自己的数据问题时遇到了这个错误,即多标签语义分割。 下面是代码 import tensorflow as tf i
我正在尝试使用 pycaffe 读取 caffe 网络中的权重和偏差。这是我的代码 weight = net.params[layer_name][0].data bias = net.params[
像这样一个由 2 个输入和 1 个输出组成的简单神经网络,没有偏差,似乎不起作用。 |input1||weight1 weight2| = Z |input2| 输出 = sigmoid(Z) 然而,
训练好了一个网络,想要查看网络里面参数是否经过BP算法优化过,可以直接读取网络里面的参数,如果一直是随机初始化的值,则证明训练代码有问题,需要改。 下面介绍如何直接读取网络的weight 和 bi
我有两个共面的多边形。 我试着做。 glEnable(GL_POLYGON_OFFSET_FILL); glPolygonOffset(0,1); 并期望一个明显“在”另一个之上。 在距离大约 70-
我有一个旨在进行反向传播的神经网络。 我一直在使用以下方法对隐藏层进行权重更新 Δwji = η × δj × yi 其中 δj 是 φ'(vj) * ej,其中 vj = Σi wjiyi,对于输出
我正在构建卷积神经网络,用于将数据分类为不同类别输入数据的形状为:30000, 6, 15, 1该数据有 30000 个样本、15 个预测变量和 6 个可能的类别。 我的模型定义如下。 x = tf.
Codahale 的“指标”收到的其中一个属性是“有偏见的”。 谁能解释一下这是什么意思? public Histogram newHistogram(Class klass,
在学习 float 在计算机中如何表示时,我遇到了我不太理解的术语“偏差值”。 float 中的偏差值与 float 指数部分的负数和正数有关。 float 的偏置值为127,这意味着 float 的
我正在尝试在tensor2tensor中创建一个简单的基于LSTM的RNN。 到目前为止,训练似乎有效,但我无法恢复模型。尝试这样做会抛出 NotFoundError ,指出 LSTM 中的偏差节点:
吴恩达的讲座说过 J= -1/m * 总和 (y*log(h(x))+(1-y)log(1-h(x))) 但是在 https://www.tensorflow.org/get_started/mnis
我在 R 中使用随机森林的回归模型,我发现参数 corr.bias 根据手册是“实验性的”,我的数据是非线性的,我只是想知道将此参数设置为 true 是否可以增强结果,加上我不知道它对于非线性数据到底
我在 CartPole 问题上遇到了困难。 购物车的输入采用0 或1 作为输入;向左或向右移动。 假设我们有一个包含4 个输入 加上偏置、3 个隐藏层 和每个1 个神经元 的网络和 1 个输出;在哪里
我想模拟 N 面偏置模具? def roll(N,bias): '''this function rolls N dimensional die with biasing provided'
在以下情况下,如何确定函数返回 0 或 1 的概率: Let the function_A return 0 with probability 40% and 1 with probability 6
在 GL ES 2.0 中,texture2DLod 函数在片段着色器中不可用。我需要移植 GLSL 着色器。 在 GL ES 2.0 中我只能使用texture2D(sampler2D sample
我有一个机器学习问题,我不知道是否有理论上的解决方案。 我有 标记 数据(我们称之为数据集 D1 )来构建随机森林分类模型并且它表现良好。 现在我的主要兴趣是将此模型应用于另一个数据集 D2 它的标签
假设我正在计算 1 到 100 之间的随机数。我希望它选择的数字是随机的,但我可以设置一个更有可能选择中心的位置。因此,如果我做随机样本让我们说一千次,那么中心数字被更频繁地选择会有明显的相关性。它选
我是一名优秀的程序员,十分优秀!