Мне нужна помощь в следующем:
L2=10^9;
nP=10^6;
x(:,1)=L2.*rand(nP,1);
y(:,1)=L2.*rand(nP,1); % Select initial partice position randomly (only positive values) NS
z(:,1)= L2.*rand(nP,1);
for ip=1:nP
r1(ip,1)= sqrt(x(ip,1)^2 + y(ip,1)^2 + z(ip,1)^2); % distance from (0,0,0) for each iteration
while r1(ip,1)>=L2
x(ip,1)=L2.*rand(1,1);
y(ip,1)=L2.*rand(1,1); % Select initial partice position randomly (only positive values) NS
z(ip,1)=L2.*rand(1,1);
r1(ip,1)= sqrt(x(ip,1)^2 + y(ip,1)^2 + z(ip,1)^2);
end
end
Проблемы, с которыми я сталкиваюсь:
1) Поскольку радиус L2 очень большой, когда я умножаюсь на L2 с помощью rand Я получаю значения очень близко к границам прямоугольника (например, 10 ^ 8) и хочу, чтобы частицы были равномерно распределены по всей сфере.
2) Также после запуска команды while результирующие распределения не более равномерный.