单位正方形内随机均匀分布N个点,求最近两点的距离的期望值。
单位正方形内随机均匀分布N个点,求最近两点的距离的期望值。 “随机均匀”是怎么定义的? N=2的解答如下:https://bbs.emath.ac.cn/data/attachment/forum/month_1011/10111316359ac847aaffaad267.png 用蒙特卡罗方法运行了一晚上,可以得到如下表所示的数据:
根据表中数据,当N很大的时候,N个点最小距离的期望值大约是1/(sqrt(2)*(N-2)+2)
程序还在继续运行中,我打算运行1个月后再查看最新结果
#####
1个月的时间到了,最新结果在第12楼 其实是老题目了, 不过改编的是最小距离的期望, 如果是平均距离的期望,那也是有解答的.
https://math.stackexchange.com/questions/1294800/average-distance-between-two-randomly-chosen-points-in-unit-square-without-calc
https://mathworld.wolfram.com/SquareLinePicking.html
https://en.wikipedia.org/wiki/Mean_line_segment_length#Square_and_rectangles
我先无脑 开满 多线程 蒙特卡洛模拟一波. 5秒钟 模拟$10^7$次.
$2$个点的,是$0.521489$,
pool=ParallelTable,2],{2}]],10^7];Mean
$3$个点的,是$0.305585$
pool=ParallelTable,3],{2}]],10^7];Mean
$4$个点的,是$0.211727$
跟fans的基本相同,
那我就干脆 略了...
rust 30行代码。
use std::time::SystemTime;
use rand::Rng;
fn main() {
let epoch = SystemTime::now();
let mut rng = rand::thread_rng();
for len in 2..=20{
let mut pool = vec!;
let mut sol = 0f64;
for n in 1..=1000000 {
for i in 0..2*len{
pool = rng.gen::<f64>();
}
let mut tmp = std::f64::MAX;
for i in 0..len{
for j in i+1..len{
let dx = pool-pool;
let dy = pool-pool;
let d = (dx*dx+dy*dy).sqrt();
if d<tmp{
tmp = d;
}
}
}
sol += (tmp-sol)/(n as f64);
}
println!("{:?}\t{:>2}: {:>}",SystemTime::now().duration_since(epoch).unwrap(), len,sol);
}
}
18.07081886s 2: 0.5214912191455748
45.97656493s 3: 0.305557455784975
84.044407247s 4: 0.2117282517252658
132.5894282s 5: 0.16236415849598956
192.371464127s 6: 0.1318543904439271
263.58566402s 7: 0.11101626645855782
346.481123341s 8: 0.09591456840176349
441.712758225s 9: 0.08439559935297665
549.852933781s10: 0.0753744652101195
670.159919181s11: 0.06811189075539963
803.926296491s12: 0.062114209340580664
951.673796245s13: 0.057053982004033256
1113.986331777s 14: 0.05281346572185144
2213.947713721s 15: 0.0491372395672005
2408.412530057s 16: 0.04593105254462259
2621.344841917s 17: 0.04313378971583958
2852.501608678s 18: 0.04066015874433873
3100.381144134s 19: 0.038448076593099435
3365.935709113s 20: 0.03645890976464638 本帖最后由 hawkzmy 于 2024-6-14 11:18 编辑
最小距离的期望值,不是平均距离。 本帖最后由 hawkzmy 于 2024-6-14 11:21 编辑
有没有解析解?
aimisiyou 发表于 2024-6-11 18:45
“随机均匀”是怎么定义的?
均匀分布就是:不是泊松分布、不是正态分布等等,是均匀的分布,平均每个地方的点一样多。 KeyTo9_Fans 发表于 2024-6-12 09:01
用蒙特卡罗方法运行了一晚上,可以得到如下表所示的数据:
根据表中数据,当N很大的时候,N个点最小距离的 ...
这是经验公式还是计算结果?
页:
[1]
2