Creation new arrays in for loop command - randomizer
显示 更早的评论
Dears,
Currently I am working on some kind of randomizer where I generate white and black balls. In the first step I generate them on the graph as a horizontal "curve". In next step I generated similar "random curve", however, it is vertical curve and it starts only when in horizontal curve black ball appears:
Variable1 = 60;
Variable2 = 30;
% Arrays for the backbone
A = zeros(Variable1,2); %triol
B = zeros(Variable1,2); %dicarboxyacid
% Horizintal randomizer
for i=1:Variable1
if randi(100,1,1)<=Variable2
A(i,2)=1;
A(i,1)=i;
else
B(i,1)=i;
B(i,2)=1;
end
end
% Deletes all zeros in A
TestForZero = A(:,1) == 0;
A(TestForZero, :) = [];
% Vertical randomizer
for q = 1:height(A)
if randi(100,1,1) <= Variable2
C1(q,2) = q+1;
C1(q,1) = A(1,1);
else
C2(q,2) = q+1;
C2(q,1) = A(1,1);
end
end
for q = 1:height(A)
if randi(100,1,1) <= Variable2
D1(q,2) = q+1;
D1(q,1) = A(2,1);
else
D2(q,2) = q+1;
D2(q,1) = A(2,1);
end
end
% Visualization of the randomizer
figure(1)
hold on
plot(A(:,1),A(:,2),'o','MarkerFaceColor',"black",'MarkerEdgeColor',"black",'MarkerSize',10)
plot(B(:,1),B(:,2),'o','MarkerFaceColor',"white",'MarkerEdgeColor',"black",'MarkerSize',10)
plot(C1(:,1),C1(:,2:end),'o','MarkerFaceColor',"black",'MarkerEdgeColor',"black",'MarkerSize',10)
plot(C2(:,1),C2(:,2:end),'o','MarkerFaceColor',"white",'MarkerEdgeColor',"black",'MarkerSize',10)
plot(D1(:,1),D1(:,2:end),'o','MarkerFaceColor',"black",'MarkerEdgeColor',"black",'MarkerSize',10)
plot(D2(:,1),D2(:,2:end),'o','MarkerFaceColor',"white",'MarkerEdgeColor',"black",'MarkerSize',10)
axis off
hold off
As you can see, I managed to make vertical curves for more than one black ball in the horizontal curve. Nevertheless, I did it "manually". Is it possible to make it in some for loop?
The problem is I do not know how many of black balls will be created for each run. Moreover, in theory its amount is infinity, because by increasing Variable1 and Variable2 I increase the amount of black balls in the curves (in horizontal as well as vertical curves).
I thought about creating new arrays for each itteration, however, I found information that it is not preffered way and it can be done in other ways. Could you please help me with that?
Thank you in advance,
Cheers
回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Random Number Generation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
