- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
设置:
问题是经典概率问题的复杂形式:
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.combinations(urn, 20)
,打印总和([1 for x in combos])
(其中 urn 是 urn 中 70 个球的列表)。
我可以将迭代器解压缩到我的计算机无法处理的 combinations(urn, 8)
长度。
注意:我知道这不会给我答案,这只是我脚本中的路障,换句话说,如果这有效,我的脚本就会有效。
问题:如果没有世界上最快的 super 计算机,我如何准确地找到预期的颜色?我的方法在计算上是否可行?
最佳答案
既然有几个人要求看数学解,那我就给吧。这是 Project Euler 问题之一,可以在合理的时间内用铅笔和纸完成。答案是
7(1 - (60 choose 20)/(70 choose 20))
要获得此值,请将 X(存在的颜色数)写为总和 X0+X1+X2+...+X6,其中如果存在第 i 种颜色,则 Xi 为 1,如果不存在,则为 0。
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))
Expectation is always linear.因此,当您被要求找到某个随机量的平均值时,尝试将数量重写为更简单的部分(例如指示符 (0-1) 随机变量)的总和通常会有所帮助。
这并没有说明如何使 OP 的方法起作用。虽然有一个直接的数学解决方案,但最好知道如何以有组织和可行的方式迭代案例。如果您接下来想要比计数更复杂的颜色集功能,这可能会有所帮助。 Duffymo 的回答提出了一些我会更明确的建议:
您可以将 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,它有一个 natural correspondence。具有在 26 个空间中选择 6 个分隔线作为分隔线或对象的方式。所以,如果你有 a way to iterate through the 6 element subsets of a 26 element set ,您可以将它们转换为遍历所有索引。
您仍然需要根据从 70 个球中抽取 20 个球的方法数来对案例进行加权,以获得该案例。 (a0,a1,a2,...,a6) 的权重是 (10 选择 a0)(10 选择 a1)...*(10 选择 a6)。这很好地处理了不可能索引的情况,因为 10 选择 11 是 0,所以乘积是 0。
因此,如果您不知道线性期望的数学解决方案,您可以迭代 230230 个案例并计算索引向量的非零坐标数的加权平均值,由小二项式的乘积加权条款。
关于python - 统计:优化python中的概率计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27903590/
接下来是我的代码: with open("test.txt") as f_in: for line in f_in: for char in line:
我们有一个六面骰子,面编号为 1 到 6。随着 n 的增加,在第 n 卷中第一次看到 1 的概率降低。我想找到最小的卷数,使得这个概率小于某个给定的限制。 def probTest(limit):
我只是想知道为什么运行下面的代码时出现错误。我正在尝试使用 numpy 为基于文本的游戏计算概率。下面的代码不是游戏本身的代码。这仅用于测试目的和学习。感谢您提前的答复,请对我宽容一点。 from n
我目前正在创建一个与多个arduino板通信的服务器软件。由于硬件原因,我使用UDP协议(protocol)。我有一个非常简单的机制,在大多数情况下,当包裹丢失时,它会重新发送包裹。我现在有两个问题:
我想在 LinearLayout 上添加一个 fling Action 。为此,我使用了以下代码。 public class NewsActivity extends Activity { .
下面是其中一个 facebook 谜题:我无法理解如何进行此操作。 你有 C 个容器、B 个黑球和无限数量的白球。您希望以一种方式在容器之间分配球,即每个容器至少包含一个球,并且选择白球的概率大于或等
我有一个希伯来语文本,就像 "×گض¸×¨ض´×™×،ض°×کוض¹×ں",我想将它转换为可读的 unicode 希伯来语字符。 我试过这段代码: const string Str = "×گض¸×
我正在尝试使用 Random.nextDouble() 获取 1.0 和 10.0 之间的随机双数: double number = 1.0 + (10.0-1.0) * Random.nextDou
我目前已经为二进制类实现了概率(至少我这么认为)。现在我想扩展这种回归方法,并尝试将其用于波士顿数据集。不幸的是,我的算法似乎被卡住了,我当前运行的代码如下所示: from sklearn impor
我在 2D 空间中有一小组数据点(大约 10 个),每个数据点都有一个类别标签。我希望根据现有数据点标签对新数据点进行分类,并关联属于任何特定标签类别的“概率”。 基于最近邻的标签来标记新点是否合适(
我正在做我的第一个 tensorflow 项目。 我需要获得给定输入和预期序列的 ctc 概率(不是 ctc 损失)。 在 python 或 c++ 中是否有任何 api 或方法可以做到这一点? 我更
我正在尝试通过 assignment 1斯坦福 cs244n 类(class)。问题 1b 强烈建议对 Softmax 函数进行优化。我设法得到了N维向量的Softmax。我还得到了 MxN 维矩阵的
我有一个预测算法的想法,该算法可以根据所选项目先前出现的顺序准确预测随机值,并分析模式以提高准确性。 基本上是一种接受两个参数的算法,一个是一组可能的选择;另一个是这些数字的历史,分析该模式并预测序列
自 HOURS 以来,我一直在努力思考这个 TopCoder 问题,但无法找到一个完美的解决方案,并找到了下面给出的一个使用得非常漂亮的解决方案! 我想弄清楚这个解决方案如何适用于给定的问题?而我当初
我只知道如何生成随机 boolean 值(真/假)。默认概率为 50:50 但是我怎样才能用我自己的概率生成真假值呢?假设它以 40:60 或 20:80 等的概率返回 true... 最佳答案 一种
对于以下示例,我如何计算 julia 中的百分位数/概率值/尾部区域 Example : N(1100, 200) #Normally distributed with mean 1100 & st
我正在尝试修改标准 kNN 算法来获取属于某个类别的概率,而不仅仅是通常的分类。我还没有找到太多关于概率 kNN 的信息,但据我了解,它的工作原理与 kNN 类似,不同之处在于它计算给定半径内每个类的
我正在使用 PostgreSQL 为我所有数据中的变量对计算经验概率密度函数。我试图确定在计算 PDF 之前索引是否/何时更有效。我像这样运行 EXPLAIN CREATE INDEX, EXPLAI
有谁知道当查询有偏移时如何在 MySql 中请求“实时结果集”(例如:select * from table limit 10 offset 20;)。它正在经历类似 的错误 'invalid use
unsigned long long int first( int b , int c){ int h=b; //int k; for(int k=b-1;k>c;k--){ b=b*k;
我是一名优秀的程序员,十分优秀!