【发布时间】:2016-02-11 01:18:38
【问题描述】:
我是这个论坛的新手。首先,我觉得拥有这样一个网站非常有趣,因为每个人都可以在不同的领域获得帮助。非常感谢。
所以我有一个问题:我应该解决以下问题:
- 用
randntrials模拟掷骰子。 - 如果
rand()在[0, 1/6]中则抛出1; - 如果
rand()在(1/6, 2/6]中,则抛出 2 - ...
- 如果
rand()在(5/6, 1]中,则抛出 6。 - 使用直方图生成试验结果的直方图。
这就是我所做的:
ntrials = 100;
X = abs(rand(1,ntrials)*6) + 1;
hist(floo(X))
现在我必须做第二个练习:
- 掷出两个骰子,S 是两个骰子的总和
- 计算 S 分别接受值 2、3、4、5.....12 之一的概率。
- 编写一个 Matlab 函数
twoTimesDice,通过模拟第一个练习中掷出 2 个骰子的理论结果。
这就是我尝试过的:
function twoTimesDice
x1 = abs(rand(1,11))*6 + 1;
s1 = floor(x1); % probably result of the first dice
x2 = abs(rand(1,11))*6 +1;
s2 = floor(x2) % probably result of de second dice
S = s1 +s2;
hist(S);
end
如果我做得好,你能告诉我吗?
【问题讨论】:
-
在第一个函数中你可以删除
abs。此外,使用hist(floor(X),1:6)仅绘制这些值的直方图。您也可以使用X = randi(6, ntrials); hist(X, 1:6)。类似的 cmets 适用于第二个函数 -
作为一个提示:你也可以使用
randi(6,n)。你的构造对我来说并不直观。
标签: matlab