内置功能NProbability
也很快:
NProbability[ x^2 + y^2 <= 1, {x, y} \[Distributed]
BinormalDistribution[{0, 0}, {1, 1}, 0]] // Timing
或者
NProbability[x^2 + y^2 <= 1, x \[Distributed]
NormalDistribution[0, 1] && y \[Distributed]
NormalDistribution[0, 1] ] // Timing
都给{0.031, 0.393469}
。
n
由于标准法线的平方和是分布ChiSquare[n]
的,因此您会得到一个更简化的表达式,NProbability[z < 1,
z \[Distributed] ChiSquareDistribution[2]]
其中z=x^2+y^2
和分布。时间同上:。x
y
NormalDistribution[0,1]
{0.031, 0.393469}
编辑:时序适用于具有 8G 内存 (MMA 8.0.4) 的 Vista 64 位 Core2 Duo T9600 2.80GHz 机器。Yoda 在这台机器上的解决方案有时间{0.031, 0.393469}
。
编辑2:模拟使用ChiSquareDistribution[2]
可以如下完成:
(data = RandomVariate[ChiSquareDistribution[2], 10^5];
Probability[w <= 1, w \[Distributed] data] // N) // Timing
产量{0.031, 0.3946}
。
编辑 3:有关时间的更多详细信息:
为了
First@Transpose@Table[Timing@
NProbability[x^2 + y^2 <= 1, {x, y} \[Distributed]
BinormalDistribution[{0, 0}, {1, 1}, 0]], {10}]
我明白了 {0.047, 0.031, 0.031, 0.031, 0.031, 0.016, 0.016, 0.031, 0.015, 0.016}
为了
First@Transpose@Table[Timing@
NProbability[x^2 + y^2 <= 1,
x \[Distributed] NormalDistribution[0, 1] &&
y \[Distributed] NormalDistribution[0, 1] ], {10}]
我明白了{0.047, 0.031, 0.032, 0.031, 0.031, 0.016, 0.031, 0.015, 0.016, 0.031}
。
为了
First@Transpose@Table[Timing@
NProbability[z < 1,
z \[Distributed] ChiSquareDistribution[2]], {10}]
我明白了{0.047, 0.015, 0.016, 0.016, 0.031, 0.015, 0.016, 0.016, 0.015, 0.}
。
对于尤达的
First@Transpose@Table[Timing@(JointDistrbution =
1/(2 \[Pi] \[Sigma]^2) E^(-((x^2 + y^2)/(2 \[Sigma]^2)));
NIntegrate[
JointDistrbution /. \[Sigma] -> 1, {y, -1,
1}, {x, -Sqrt[1 - y^2], Sqrt[1 - y^2]}]), {10}]
我明白了{0.031, 0.032, 0.015, 0., 0.016, 0., 0.015, 0.016, 0.016, 0.}
。
对于经验估计
First@Transpose@Table[Timing@(Probability[w <= 1,
w \[Distributed] data] // N), {10}]
我得到了{0.031, 0.016, 0.016, 0., 0.015, 0.016, 0.015, 0., 0.016, 0.016}
。