如何用给定数据计算概率?

时间:2011-07-18 18:43:10

标签: c++ math

这是编程需求的数学问题...... 如果您有这样的数据

,那么计算概率的方法是什么?

40000

32423432

3423423

4543535

354545

最低的数字是40000,最大的是32423432 这些数字在某些txt文件中给出,如输入参数,我需要生成一个将采用此格式的xml文件

<number="40000" probability="0.0">

<number="32423432" probability="1.0">

<number="354545" probability="0.4532">

我用输入参数编写程序,我使用TinyXML生成xml文件但是我遇到了公式问题... 所以如果有人停下来谢谢!

5 个答案:

答案 0 :(得分:3)

您可以在此处做的最好的事情是计算histogram

答案 1 :(得分:2)

如果你想要一个线性缩放(映射),那么这将起作用(使用双精度):

double newsmallno = (number - smallest)/(largest - smallest)

注意,对于354545的数字,这给出了0.0097的值,所以也许你不希望它是线性的,在这种情况下你需要提供更多细节。

答案 2 :(得分:0)

听起来像是在寻找:

double max = 32423432;
double min = 40000;

double val = 354545;
double prob = (val - min) / (max - min)

这不是概率,更像是你在[0 1]到[min,max]之间转换一个数字

答案 3 :(得分:0)

我想你可能正在寻找Cumulative distribution function。维基百科说:

  

累积分布函数(CDF)描述概率   具有给定概率的实值随机变量X.   分布将在小于或等于x的值处找到。   直觉上,它是概率的“区域到目前为止”的功能   分布。

您必须确定您的数字是正态分布(钟形曲线)还是均匀分布。

如果您正在寻找,那么您可能需要在stats.stackexchange.com上获取统计数据或交叉发布。

答案 4 :(得分:0)

如果您有基础随机分布的模型,您可以利用这些知识推导出模型参数。例如,您可能知道数据应该具有正态分布,但是平均值和标准差是未知的。手头的数据给出了该分布参数的不完美图像。 (注意:示例数据几乎肯定不是正常分布的。)

如果您没有这样的模型,那么您可以做的最好的事情是构建累积分布函数的估计值。直方图可以作为CDF的良好估计。请注意,如果您这样做,您将不会有CDF(40000)= 0和CDF(32423432)= 1。以这种方式考虑:收集更多数据,您可能会得到一个小于40000的样本或一个大于32423432的样本。