Мне нужно создать программу для симуляции обмена энергией между частицами, позвольте мне объяснить: мне нужно создать список из 1000 частиц, каждая частица начинается с энергии = 5 квантов, затем я должен случайно выбрать 2 частицы (P1 иP2) чтобы обменять один квант энергии (E1-1 и E2 + 1), это будет 1 обмен, я должен сделать n обмена, пока не достигну распределения Больцмана.
с учетом того, что частица не может обмениваться энергией с собой, а частица не может иметь энергию <1 кванта.</p>
% Создать список (Particle / energ) [1 / 5,2 / 5,3 / 5 ... 1000/5].
from_to2(P1, P1000, List) :-
bagof(N/5, between(P1,P1000,N), List),!.
from_to2(_,_,[]).
% Обмен 1 квантом энергии между частицами: E1 + 1, E2-1
energexchange(L1,L2):-
choose(L1,Px/Ex),
delete(Px/Ex,L1,Listsem1),
choose(Listsem1,Py/Ey),
delete(Py/Ey,Listsem1,Listsem2),
Ex > 1, Ex2 is Ex - 1, add(Px/Ex2,Listsem2,Listcom1),
Ey2 is Ey + 1, add(Py/Ey2,Listcom1,L2).
пример:? -From_to2 (1,1000, L), обмен энергией (L, L2).дает L2 = [3 / 4,1 / 6,2 / 5,4 / 5,5 / 5 ... 1000/5]
L2 - первый обмен, теперь мне нужно использовать L2 в следующемобмен, обмен энергией (L2, L3).выполнить второй обмен и т. д. ...
Что я должен сделать, чтобы повторить обмен энергией 1000 раз без подсчета сбоев (когда Ex = 1)?