2 u014767385 u014767385 于 2016.03.23 14:33 提问

关于C++中伯努利分布bernoulli_distribution的使用,求助!

如题,我是有一个double prob,作为伯努利分布的p值。
每次如果bool值是true,就是succeed;反之则不是。
函数如下。

 bool ifSucceed(double prob)
{
    default_random_engine generator;
    bernoulli_distribution b(prob);
    return b(generator);
}


调用时:

 for (int i = 0; i < n - 1; ++i)
    {
        if (ifSucceed(cSetx[i].probFailure))
        {
            cout << i<<": Twice Delivery" << endl;
            totalDist += 3*getDist(cSetx[i], cSetx[i + 1]);
        }
        else
        {
            totalDist += getDist(cSetx[i], cSetx[i + 1]);
            //cout << "TotalDist: " << totalDist << endl;
        }

但是试验了几次,都没有出现succeed的情况。
就算把部分概率改为1,那一部分也不一定能出现succeed,这显然是不合理的。

请各位赐教!谢谢!

1个回答

Dennis_Zip
Dennis_Zip   2016.03.23 16:17
已采纳

generator和b应该放在循环的外面,在固定设置一个概率值后,打印循环调用伯努利分布的结果值,例如:

std::default_random_engine generator;
std::bernoulli_distribution distribution(0.5);
int count=0;

for (int i=0; i<10000; ++i)
if (distribution(generator)) ++count;
std::cout << "true: " << count << std::endl;
std::cout << "false: " << nrolls-count << std::endl;
-------------------结果----------------------
true: 4994
false: 5006

u014767385
u014767385 我的for循环里每一次概率值是不一样的,我在问题描述里加入了后面的代码,能麻烦您再看看么
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++ - 随机生成器 伯努利分布(bernoulli distribution) 的 详解 及 代码
随机生成器 伯努利分布(bernoulli distribution) 的 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17335871 伯努利分布(bernoulli distribution), 是判断某件事情发生或者未发生的概率; 给定参数p, 可以修改概率的值, 发生概率(true)是p, 未发生概率(false)是1-p;
伯努利分布(Bernoulli distribution)
伯努利分布 是一种离散分布,有两种可能的结果。1表示成功,出现的概率为p(其中0概率分布有两种类型:离散(discrete)概率分布和连续(continuous)概率分布。离散概率分布也称为概率质量函数(probability mass function)。离散概率分布的例子有伯努利分布(Bernoulli distribution)、二项分布(binomial distribution)、泊松分
伯努利分布(二项分布)的假设检验
要点 1. 单个二项分布检验用SPSS二项检验或者单样本T检验 2. 比较两个个二项分布差异性之类的可以用Anova或者独立样本T检验,后者可以得到置信区间。 3.上面的SPSS数据形式都是1和0的形式,用MATLAB生成即可。 譬如这样一个问题: 中国的互联网络覆盖率是不是在30%以上(5%显著性水平)?抽样显示,150个样本中,有57个是有网络覆盖...
【机器学习笔记】伯努利分布和高斯分布
涉及到的两个概念就是 : 广义线性模型(Generalized Linear Models) 和 指数分布族 (The exponential family)有一个这样神奇的式子: p(y;η)=b(y)eηTT(y)−a(η)p(y;\eta) = b(y)e^{\eta^TT(y)-a(\eta)}来表示指数分布族,只要我们给定特定的 T(y),a(y),b(y)T(y), a(y), b(
伯努利分布、二项分布、泊松分布、指数分布简介
伯努利分布:     首先说伯努利分布, 这个是最简单的分布,就是0-1分布 以抛硬币为例, 为正面的概率为p, 反面的概率为q 是一种离散型概率分布,也是很多分布的基础 二项分布:     还是以伯努利分布为基础,假设伯努利分布中得1的概率为p, 0的概率为q 那么二项分布求的就是进行n次伯努利分布,得到k次1的概率是多少 例如:单身汪找妹子要微信,假设妹子会给微信的概
机器学习总结二:逻辑回归Logistic Regression
机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法。简单的说回归问题和分类问题如下: 回归问题:预测一个连续的输出。 分类问题:离散输出,比如二分类问题输出0或1. 逻辑回归常用于垃圾邮件分类,天气预测、疾病判断和广告投放。 一、假设函数     因为是一个分类问题,所以我们希望
伯努利分布详解(包含该分布数字特征的详细推导步骤)
由于狄利克雷分布是二项分布扩展到n个变量的
机器学习小组知识点7:伯努利分布(Bernouli Distribution)
伯努利分布是较为简单的一种分布,应用于两种实验结果。要么成功,要么失败,一定程度上是二元的性质。这里,我们假设成功的概率为pp,显然失败的概率就变成了1−p1-p。 概率公式可以表示为f(x)=px(1−p)1−xf(x)=p^x(1-p)^{1-x},xx为0或1,1代表成功,0代表失败。 接下来我们研究以下统计量, 1.数学期望 E(x)=E(x1)+E(x2)+⋯+E(xn)=x1p
伯努利分布、泊松分布
1. 伯努利分布 伯努利分布(Bernoulli distribution)又名两点分布或0-1分布,介绍伯努利分布前首先需要引入伯努利试验(Bernoulli trial)。 伯努利试验是只有两种可能结果的单次随机试验,即对于一个随机变量X而言: 伯努利试验都可以表达为“是或否”的问题。例如,抛一次硬币是正面向上吗?刚出生的小孩是个女孩吗?等等 如果试
学以致用—二项分布(伯努利分布)概率分布图的绘制
图表类型选复合图,然后选择次坐标轴,即可绘制出累积概率分布图(有点像柏拉图)。