【发布时间】:2018-09-28 07:22:30
【问题描述】:
所以,我必须在 MATLAB 中模拟抛掷不公平骰子,它有 20% 的概率显示 1 和 4 之间的每个面,以及 10% 的概率显示 5 和 6 的每个面。我有生成 5000 个随机整数,代表掷骰子的结果。我还必须使用 5000 次重复试验打印出模拟的期望值和标准差。
这是我在 MATLAB 中编写的代码:
x=randi(6,1,5000); %Generate 5000 random values from 1-6
mean_x = mean(x); %Find expected value
std_x = std(x); %Find standard deviation
range_x = [1:6];
bar(range_x, pmf); %plot the pmf
xlabel('Value of face')
ylabel('Simulated probability mass function')
fprintf('The expected value is %4.2f\n',mean_x);
fprintf('The standard deviation is %4.2f\n', std_x);
function pmf=finitepmf(sx,px,x) %function that finds pmf
pmf=zeros(size(x(:)));
for i=1:length(x)
switch x(i)
case 1
px = 0.2;
case 2
px = 0.2;
case 3
px = 0.2;
case 4
px = 0.2;
case 5
px = 0.1;
case 6
px = 0.1;
end
pmf(i)= sum(px(find(sx==x(i))));
end
end
但是,如果骰子是公平的,我会得到相同的pmf。我做错了什么?
【问题讨论】:
-
自从我接触 matlab 以来已经有好几年了,但是对于 1。您正在计算原始正常模具的平均值和标准偏差,而不是装配模具。
-
你在哪里调用finitepmf? sx,px,x在哪里传入?
-
当我运行你的代码时,它显示
Undefined function or variable 'pmf'.