Jawaban singkatnya adalah: Ya! Ini bisa bekerja, dan sesederhana mengalikan vektortn∈ ( 0 , 1)d oleh bilangan bulat m, dan mengambil bagian integer dari masing-masing komponennya.
Jawaban yang lebih panjang adalah bahwa intuisi Anda benar, bahwa dalam praktiknya hasilnya beragam tergantung pada pilihan:
- urutan mana yang Anda pilih (Halton, Sobol, dll.)
- parameter dasar (misalnya, 2,3,5, ...)
- dan pada tingkat yang lebih rendah, nilai m.
Namun, saya baru-baru ini menulis posting blog terperinci "Keefektifan urutan quasirandom yang tidak masuk akal , tentang cara mudah membuat urutan perbedaan rendah terbuka dalam dimensi arbitrer, yang jauh lebih dapat menerima diskritisasi daripada urutan perbedaan rendah yang ada saat ini, seperti urutan Halton dan Kronecker.
Bagian di pos yang disebut "Meliputi" secara khusus membahas pertanyaan Anda mengenai diskritisasi urutan perbedaan rendah.
Dalam kotak gambar berikut (yang menunjukkan titik latttice integer unik) dengan lebih sedikit merah menyiratkan distribusi yang lebih merata, karena setiap kotak merah menunjukkan bahwa sel tidak mengandung titik biru. Orang dapat dengan jelas melihat bagaimana bahkanR-setelah mendistribusikan poin dibandingkan dengan metode kontemporer lainnya.
Solusinya adalah metode perulangan aditif (modulo 1) yang menggeneralisasi masalah 1-Dimensi yang solusinya bergantung pada Rasio Emas. Solusi untukdMasalah -dimensi, tergantung pada konstanta khusus ϕddimana ϕd adalah nilai terkecil, nilai riil positif x seperti yang
xd+ 1= x + 1
Untuk d= 1, ϕ1= 1.618033989 ..., yang merupakan rasio emas kanonik.
Untuk d= 2, ϕ2= 1.3247179572 ..., yang sering disebut konstanta plastik, dan memiliki beberapa sifat yang indah. Nilai ini diduga kemungkinan besar merupakan nilai optimal untuk masalah dua dimensi terkait [Hensley, 2002].
Jacob Rus telah memposting visualisasi yang indah dari urutan perbedaan rendah 2 dimensi ini, yang dapat ditemukan di sini .
Dengan konstanta spesial ini, perhitungan n- Istilah sekarang sangat sederhana dan cepat untuk dihitung:
R :tn=αα0+ nαα( mod1 ) ,n = 1 , 2 , 3 , . . .
dimanaαα =(1ϕd,1ϕ2d,1ϕ3d, . . .1ϕdd) ,
Tentu saja, alasan ini disebut urutan perulangan adalah karena definisi di atas setara dengan
R :tn + 1=tn+αα( mod1 )
Dalam hampir semua contoh, pilihan αα0 tidak mengubah karakteristik utama, dan karena alasan kesederhanaan yang jelas, αα0=00adalah pilihan yang biasa. Namun, ada beberapa argumen, yang berkaitan dengan simetri, yang menyarankan ituαα0=1 / 21 / 2 adalah pilihan yang lebih baik.
Kode Python adalah
# Use Newton-Rhapson-Method
def gamma(d):
x=1.0000
for i in range(20):
x = x-(pow(x,d+1)-x-1)/((d+1)*pow(x,d)-1)
return x
d=5
n=1000
# m can be any number.
# In the diagram above it is chosen to be exactly sqrt of n,
# simply to to make the visualization more intuitive
# so that ideally each cell should have exactly one dot.
m=10
g = gamma(d)
alpha = np.zeros(d)
for j in range(d):
alpha[j] = pow(1/g,j+1) %1
z = np.zeros((n, d))
c = (np.zeros((n,d)).astype(int)
for i in range(n):
z = (0.5 + alpha*(i+1)) %1
c = (np.floor(m *z)).astype(int)
print(c)
Semoga itu bisa membantu!