我完全迷失在此使用MATLAB函数,所以情况如下: 假设我有SUM = 0,和 我有一个用户给我的概率P,我必须将这个常数P与其他M(也是用户给出M)随机概率进行比较,如果P较大,我将1加到SUM,如果P较小我加 - 1到SUM ...最后我想在屏幕上打印过程图。
到目前为止,我只使用此代码进行了一个阶段:
function [result] = ex1(p)
if (rand>=p) result=1;
else result=-1;
end
(类似M = 1)
您如何建议我可以修改此代码,使其按照我之前描述的方式工作(包括获取图表)?
或许我的逻辑错了?问题是我得到1概率为P,-1得概率(1-P),并且SUM是相同的
非常感谢
答案 0 :(得分:1)
你可以这样做:
p = 0.25; % example data
M = 20; % example data
random = rand(M,1); % generate values
y = cumsum(2*(random>=p)-1); % compute cumulative sum of +1/-1
plot(y) % do the plot
这里的重要函数是cumsum
,它对2*(random>=p)-1
生成的+ 1 / -1值序列进行累加求和。
包含p=0.5
,M=2000
的示例图表:
答案 1 :(得分:1)
我不确定你是如何实现你的意见的,但是这应该让你顺利开始:
p = 0.5; % Constant probability
m = 10;
randoms = rand(m,1) % Random probabilities
results = ones(m,1);
idx = find(randoms < p)
results(idx) = -1;
plot(cumsum(results))
m = 1000
: