我试图用两个条件进行实验,这两个条件应该以一定的概率显示出来。在这种情况下,"Trial_p“应该出现在2/3的情况下,"Trial_c”应该出现在1/3的情况下。当我进行实验时,我确实得到了一个相当随机的序列,但概率并不像我所定义的那样!有人能帮忙吗?
Trial_p = [0 4 1 2]; % trial with percept
td1 = [0 1 0.5 2];
Trial_c = [0 4 3]; % control trial
td2 = [0 1 2];
total_ntrials = 9; % 120 trials
prob1 = 1/3*2; %0.66
prob2 = 1/3*1; %0.33
my_sequence = [];
my_duration = [];
randomized_seq = randsrc(1,total_ntrials,[1,2; prob1,prob2]); % randomize trialtypes
%x = rand(1)*(10-5) + 5;
for i = 1:length(randomized_seq)
if randomized_seq(i) == 1
td1(1) = floor(rand(1)*(5-1)+1); %(30-20) + 20);
my_sequence = cat(2, my_sequence, Trial_p);
my_duration = cat(2, my_duration, td1);
elseif randomized_seq(i) == 2
td2(1) = floor(rand(1)*(10-5) + 5);
my_sequence = cat(2, my_sequence, Trial_c);
my_duration = cat(2, my_duration, td2);
end
end发布于 2020-07-31 15:14:43
除非观测的数量很高(大数定律),观察到的比例自然会偏离预期的概率。尝试生成大量值并检查:
>> prob1 = 2/3;
>> prob2 = 1/3;
>> randomized_seq = randsrc(1,1e6,[1,2; prob1,prob2]);
>> mean(randomized_seq==1)
>> mean(randomized_seq==2)给出
ans =
0.666610000000000
ans =
0.333390000000000如果你想要一个确切的比例,比如每种情况中的80和40:
randomized_seq = repelem([1 2], [40 80]); % generate exact number of cases
randomized_seq = randomized_seq(randperm(numel(randomized_seq))); % random shufflehttps://stackoverflow.com/questions/63192370
复制相似问题