如何随机化一个向量a
中的数字,权重分配的方式是我可以控制哪些数字“跟随”其他数字?
让我们说:
a = [ 1 2 3 4]
我想获得这样的东西:
1 2 1 3 4 2 1 4 3 4 1 3 4 1 ....
我的目标是创建一个更长的向量(包括1到4之间的这些数字,置换),同时增加权重:
1→2,2→1(在矢量中1跟随1,反之亦然)1/3的案例
3→4,4→1(在矢量中为4后3,反之亦然)在1/3的情况下
所有其他可能的过渡,1/3的案例
我设法获得了一个更长的向量,这些数字是置换的,但我不知道如何应用这些权重/规则。
答案 0 :(得分:0)
使用马尔可夫链的这个转换矩阵:
M = 1/9*[2, 3, 2, 2; ...
3, 2, 2, 2; ...
2, 2, 2, 3; ...
3, 2, 2, 2];
使用以下算法:
function realizations = realizeMarkovChain(M, start, numSteps)
%// Generates realization of Markov chain given by transition matrix M.
%// The probabilities of going from state i to a different state are given
%// by the rows M(i,:) of the transition matrix
currentPosition = start;
cdf = cumsum(M,2);
realizations = zeros(1, numSteps);
for i = 1:numSteps
currentPosition = find(rand < cdf(currentPosition,:), 1, 'first');
realizations(i) = currentPosition;
end