Так что я пытаюсь преобразовать этот код Matlab в код Python при генерации последовательности псевдослучайных чисел. Но результат, который я получаю из кода Matlab и кода Python вначале, дает небольшую разницу, пока через некоторое время (например, в 500-й последовательности) он действительно слишком сильно отличается. Как я могу получить точно такое же число, как и в коде Matlab?
Я понимаю, что проблема связана с разницей округления в Matlab и Python. тогда как в matlab он, кажется, округляет его до ближайшего 4 числа после десятичной дроби, а python округляет его до большей длины. Я попытался округлить каждую операцию в последовательности псевдослучайных чисел с округлением (a, 4), но это только делает ее более отличной. Помогите мне пожалуйста, что я сделал не так?
Вот код Matlab
x=0.21;
u=0.399;
d=43;
N0=500;
L= N0+256;
xx=zeros(1,L);
for i=1:L
if x<0.5
x=(4-u)/4*sin(pi*x)+u/2*x;
else
x=(4-u)/4*sin(pi*x)+u/2*(1-x);
end
xx(i)=x;
end
Вот код Python
import numpy as np
def stmap(u,x,n):
seq=[]
for i in range(n):
if x<0.5:
st=(4-u)/4*np.sin(np.pi*x)+u/2*x
else:
st=(4-u)/4*np.sin(np.pi*x)+u/2*(1-x)
seq.append(st)
x=seq[i]
return seq
d=43
n=500
x=0.21
u=0.399
X=stmap(u,x,n+256)
Я ожидаю получить точно такой же результат споследовательность, которую я получаю из кода Matlab.