前言
使用蒙特卡洛方法对自然数e进行求解
一、关于自然数e
关于自然数e的概念,可以参考知乎大神的讲解。
链接如下: link.
二、Matlab语言实现
代码如下:
%% 蒙特卡罗方法估计e
tic
people = 100; %测试人数
n = 1000000; % 蒙特卡洛模拟的次数
letter = eye(people);
counts = 0; % 计数
for i = 1:n
%将打乱信封分发给测试者
r = randperm(size(letter,1));
letter_r = letter(r,:);
%判断是否都没有拿到自己的信封
discriminant_matrix = letter_r.*letter;
if (isequal(discriminant_matrix, zeros(people)))
counts = counts +1;
end
end
format long
e = n/counts;
disp(e);
toc %计算tic和toc中间部分的代码的运行时间
总结
希望大家多提宝贵意见。