Generationf of uniform random
2 次查看(过去 30 天)
显示 更早的评论
How can I generate the uniform random array with the constraint of second value not changing more than 20% of the first value
for example (0.5 0.45 0.54 0.63 0.52...........) The difference between first random to second random should be within 20% of first value and the overall random should in uniform manner.
Thank You.
3 个评论
Walter Roberson
2017-11-10
The values after the first are all to be within 20% of the first? Or the values after the first each have to be within 20% of the immediately proceeding value?
采纳的回答
Walter Roberson
2017-11-10
V = zeros(1,100);
V(1) = rand;
for K = 2 : 100; V(K) = V(K-1) + (rand() * 2 - 1) * V(K-1) * .2; end
5 个评论
Walter Roberson
2017-11-11
Suppose we remove the restriction that the maximum value can be 1. Suppose we simplify the model by alternately adding and subtracting the full 20%, a simple up/down randomness. Then each time we subtract 20% the previous value would be multiplied by 4/5, and each time we add 20% the previous value would be multiplied by 6/5. In this simplified model, those occur in pairs, so each pair would give 4/5 * 6/5 = 24/25 times the result of the previous pair. As you continue this, the end result is going to be (24/25)^n which for large n, the result is clearly going to tend to 0.
更多回答(1 个)
Kaushik Lakshminarasimhan
2017-11-10
编辑:Kaushik Lakshminarasimhan
2017-11-10
This should work:
N=10; % number of random numbers
success = false;
while ~success
x = rand(N,1);
[minval,minindx] = min(abs(x(2:end) - x(1)));
if minval < 0.2*x(1)
x([2 minindx+1]) = x([minindx+1 2]);
success = true;
end
end
disp(x);
Note that as Star Strider pointed out the sequence will no longer be random.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Random Number Generation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!