Chcę napisać kod, aby wygenerować losową ścieżkę przez prostokąt o danym rozmiarze.Losowa ścieżka przez prostokąt
Zacznę od punktu (0,0)
i iść up
lub right
dotrzeć xlim
i ylim
.
Oto mój kod,
y = 10;
x = 10;
yOld = 0;
xOld = 0;
figure
axis([0 x 0 y])
while yOld < y && xOld < x
DirectionChange = randi([0 1],1);
if DirectionChange == 0
yNew = yOld + 1;
xNew = xOld;
else
xNew = xOld + 1;
yNew = yOld;
end
line ([xOld xNew],[yOld yNew],'LineWidth',3);hold on
yOld = yNew;
xOld = xNew;
end
line ([xNew x],[yNew y],'LineWidth',3);hold off
Kod ma while loop
, a kończy się, gdy jeden z x
lub y
osiągnie to ograniczenie.
Więc działa poprawnie pod warunkiem x = y
.
Jednak, gdy y > x
jest bardziej prawdopodobne, że ścieżka osiągnie wcześniej numer xlim
.
do 12 przebiegów x = 10, y = 10
dostać (ja zrobiłem to kolorowy wyglądać lepiej!),
Ustawianie x = 10, y = 20
, mam,
Jak widać Tracę przypadkowość w ostatnim przypadku, ponieważ zwiększa się prawdopodobieństwo osiągnięcia x
osiągania limitu.
Wszelkie sugestie, jak zachować losowość w przypadku x~=y
?
Dzięki.
Nie jestem pewien co do rozwiązania sprawy z drugiego rozwiązania. Myślę, że problem może być, jeśli y nie jest wielokrotnością x, gdy y> x lub x nie jest wielokrotnością y, gdy x> y, w przeciwnym razie wydaje mi się to w porządku. Co myślisz? – Divakar
@Divakar Twoje rozwiązanie wygląda dobrze tak długo, jak OP jest w porządku z obsługą ruchu niecałkowitego. Różnice między tymi dwoma rozwiązaniami (Arpi's/moje i twoje) polegają na tym, że zmieniamy * prawdopodobieństwo * ruchu i zmieniamy kwotę * ruchu *, aby utrzymać prawdopodobieństwo trafienia w oba ograniczenia. Dwa różne i ważne rozwiązania tego samego pytania. – Luigi
W porządku brzmi dla mnie jak ulga, że w jakiś sposób wygląda na prawidłowy. A co ze sporem, czy to z jakiegoś innego powodu? Przepraszam, że przeszkadzam, jeśli to nie ty. – Divakar