Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
统计:在python中优化概率计算_Python_Math_Statistics_Probability - Fatal编程技术网

统计:在python中优化概率计算

统计:在python中优化概率计算,python,math,statistics,probability,Python,Math,Statistics,Probability,设置: 该问题是经典概率问题的复杂形式: 70 colored balls are placed in an urn, 10 for each of the seven rainbow colors. What is the expected number of distinct colors in 20 randomly picked balls? 我的解决方案是python的itertools库: combos=itertools.compositions(urn,20), 打印总和([

设置:

该问题是经典概率问题的复杂形式:

70 colored balls are placed in an urn, 10 for each of the seven rainbow colors.

What is the expected number of distinct colors in 20 randomly picked balls?
我的解决方案是python的itertools库:
combos=itertools.compositions(urn,20)
打印总和([1代表组合中的x])
(其中urn是urn中70个球的列表)

我可以将迭代器解压到我的计算机无法处理的
组合(urn,8)
长度

注意:我知道这不会给我答案,这只是我脚本中的一个障碍,换句话说,如果这行得通,我的脚本就会行得通

问题:如果没有世界上最快的超级计算机,我如何才能准确地找到预期的颜色?我的方法在计算上可能吗?

  • 制作一个瓮,每种颜色10个
  • 决定你想要的试验次数
  • 制作一个容器来保存每次试验的结果
  • 对于每个试验,从骨灰盒中随机抽取20个项目,制作一组这些项目,将该组项目的长度添加到结果中
  • 找出结果的平均值

这不就是重复的组合吗


既然有几个人要求看数学解,我就给他们。这是Euler项目中的一个问题,可以用铅笔和纸在合理的时间内完成。答案是

7(1 - (60 choose 20)/(70 choose 20))

获取此写X,颜色的计数作为总和x0+x1+x2+…+x6,其中如果第i个颜色存在,则席是1,如果不存在则为0。p>

E(X) 
= E(X0+X1+...+X6) 
= E(X0) + E(X1) + ... + E(X6)        by linearity of expectation
= 7E(X0)                             by symmetry
= 7 * probability that a particular color is present
= 7 * (1- probability that a particular color is absent)
= 7 * (1 - (# ways to pick 20 avoiding a color)/(# ways to pick 20))
= 7 * (1 - (60 choose 20)/(70 choose 20))
因此,当你被要求寻找某个随机量的平均值时,尝试将该随机量重写为一组简单的变量,如指标(0-1)随机变量,通常会有所帮助


这并没有说明如何使OP的方法起作用。虽然有一个直接的数学解决方案,但最好知道如何以一种有组织和可行的方式迭代这些案例。如果您下一步需要比计数更复杂的颜色集函数,这可能会有所帮助。达菲莫的回答提出了一些我将更明确的建议:

您可以将从70个调用中提取20个调用的方法分解为按颜色计数索引的类别。例如,索引(5,5,10,0,0,0,0)表示我们绘制了第一种颜色的5种,第二种颜色的5种,第三种颜色的10种,其他颜色都没有

可能的索引集包含在总和为20的非负整数的7元组集合中。其中一些是不可能的,例如(11,9,0,0,0,0,0),问题假设每种颜色只有10个球,但我们可以处理它。非负数加起来等于20的7元组集合的大小为(26选择6)=230230,并且它有一个方法,可以在26个空间中选择6个分隔符作为分隔符或对象。因此,如果有,可以将这些转换为遍历所有索引

你仍然需要通过从70个球中抽出20个球的方法来称量箱子的重量,才能得到那个箱子。(a0,a1,a2,…,a6)的重量是(10选择a0)(10选择a1)…*(10选择a6)。这很好地处理了不可能索引的情况,因为10选择11是0,所以乘积是0


因此,如果你不知道数学解的线性期望值,你可以迭代230230个例子,计算索引向量的非零坐标数的加权平均值,用小二项的乘积加权。

?如果是这样,我们可以添加
[project euler]
标记。(暴力倾向于不适用于更高的PE问题-你需要一个数学/组合解决方案)。我没有参加tag的唯一原因是因为tag的描述:“不要使用这个tag项目Euler是一组不同难度的数学规划问题。”啊-上次我检查时没有这样做。。。我想你没有使用它是对的。不要解包,迭代。有一个单行数学解决方案,基于将计数重写为和,然后使用期望的线性。你建议进行多少随机试验以获得所需的精度10^-9?我觉得大概有10^18次试验,所以我认为应该使用另一种方法。@DouglasZare我没有看到问题中的精度要求-这有点过头了。@DouglasZare只是出于好奇,你是如何计算达到给定精度所需的试验数的?@rubik:你希望得到1/n的精度,对于一些c。通过简化假设指标变量(对于每种颜色的存在)是独立的,我估计了c的值(大约为1)。独立随机变量之和的方差是方差之和,因此这种独立性假设使得计数方差的计算变得简单,7p(1-p),其中p是.974,即每种颜色被包括在内的概率。标准偏差是7p(1-p)的平方根,0.42,接近1/2或1。通过与尽可能反相关的指标总和进行比较,可以确定标准偏差计算中独立性假设的误差有多重要。这没什么区别。我们假设相关性为0,实际相关性是一个小的负数,尽可能使其为负会产生另一个易于分析的随机变量,其标准偏差为0.43。不,我相信你说的是计算选择方法数量的星条旗法,比如,7类20个无序对象。然而,当你从一个瓮中取出20件每种颜色10件的物品时,这些物品的概率并不相等。一种颜色不能有11种,只有一种方法可以得到前两种颜色中的10种,但是(10选5)*(10选5)方法可以得到第一种颜色的10种,然后是第二种和第三种颜色的5种。我不知道星条旗法是什么。链接给出了我在中的公式