【发布时间】:2013-10-24 21:53:08
【问题描述】:
我是 matlab 新手。我想做以下事情:
- 在三个备选方案 A、B 和 C 之间生成一个包含一千次随机抽签的数组,其中在每次抽签时,每个备选方案都有相同的被选中概率。
所以最终我需要像 P = [ A A B C B B B C A C A C C ... ] 之类的东西,其中数组中的每个元素都是在三个可能的结果中随机选择的。
我想出了一个解决方案,这正是我想要的,即
% Generating random pick among doors 1,2,3, where 1 stands for A, 2 for B,
% 3 for B.
I = rand(1);
if I < 1/3
PP = 1;
elseif 1/3 <= I & I < 2/3
PP = 2;
else
PP = 3;
end
% Generating a thousand random picks among dors A,B,C
I = rand(999);
for i=1:999
if I(i) < 1/3
P = 1;
elseif 1/3 <= I(i) & I(i) < 2/3
P = 2;
else
P = 3;
end
PP = [PP P]
end
正如我所说,它可以工作,但是当我运行该程序时,我认为这是一项简单的任务需要一段时间。同时,我长这样一个任务是“应该”在matlab中承担的。所以我有三个问题:
- 这真的是一个缓慢的过程来产生预期的结果吗?
- 如果是,为什么这个过程特别慢?
- 产生预期结果的更有效方法是什么?
【问题讨论】:
-
不确定我完全理解你在做什么,但听起来你可以制作一个数组并使用
array(i)=randi(3)来获得你想要的东西。randi(x)应该在区间[0,x)上给你一个随机整数(Bas Swinckels 打败了我。看看他的答案)
标签: arrays matlab if-statement for-loop