Câu trả lời ngắn gọn là có! Nó có thể hoạt động và đơn giản như nhân vectơ với một số nguyên và lấy phần nguyên của mỗi thành phần của nó.tn∈(0,1)dm
Câu trả lời dài hơn là trực giác của bạn là chính xác, rằng trong thực tế, nó có kết quả hỗn hợp tùy thuộc vào sự lựa chọn của:
- bạn chọn chuỗi nào (Halton, Sobol, v.v.)
- các tham số cơ bản (ví dụ: 2,3,5, ...)
- và ở mức độ thấp hơn, giá trị của .m
Tuy nhiên, gần đây tôi đã viết một bài đăng trên blog chi tiết "Hiệu quả không hợp lý của các chuỗi quasirandom , về cách dễ dàng tạo ra một chuỗi chênh lệch thấp kết thúc mở trong các kích thước tùy ý, có thể dễ dàng hơn nhiều so với các trình tự chênh lệch thấp hiện có, chẳng hạn như trình tự Halton và Kronecker.
Phần trong bài đăng có tên "Bao trùm" đề cập cụ thể đến câu hỏi của bạn về việc loại bỏ các chuỗi sai lệch thấp.
Trong các ô vuông hình ảnh sau (biểu thị một điểm mạng nguyên duy nhất) có ít màu đỏ hơn ngụ ý phân phối đồng đều hơn, vì mỗi ô vuông màu đỏ chỉ ra rằng ô không chứa điểm màu xanh. Người ta có thể thấy rõ ràng ngay cả resultence phân phối điểm so với các phương pháp đương đại khác.R
Giải pháp là phương pháp tái phát phụ gia (modulo 1) nhằm khái quát hóa vấn đề 1 chiều mà giải pháp phụ thuộc vào Tỷ lệ vàng. Giải pháp cho vấn đề -chiều, phụ thuộc vào hằng số đặc biệt , trong đó là giá trị nhỏ nhất, giá trị thực dương của sao cho
dϕdϕdx
xd+1=x+1
Với , , đó là tỷ lệ vàng chính tắc.d=1ϕ1=1.618033989...
Với , , thường được gọi là hằng số dẻo và có một số tính chất đẹp. Giá trị này được phỏng đoán rất có thể là giá trị tối ưu cho một vấn đề hai chiều liên quan [Hensley, 2002].d=2ϕ2=1.3247179572...
Jacob Rus đã đăng một hình ảnh đẹp của chuỗi chênh lệch thấp 2 chiều này, có thể tìm thấy ở đây .
Với hằng số đặc biệt này, việc tính toán thuật ngữ thứ bây giờ cực kỳ đơn giản và nhanh chóng để tính toán:n
R:tn=αα0+nαα(mod1),n=1,2,3,...
whereαα=(1ϕd,1ϕ2d,1ϕ3d,...1ϕdd),
Tất nhiên, lý do đây được gọi là chuỗi lặp lại là vì định nghĩa trên tương đương với
R:tn+1=tn+αα(mod1)
Trong gần như tất cả các trường hợp, lựa chọn không thay đổi các đặc điểm chính và vì vậy, vì lý do đơn giản rõ ràng, là lựa chọn thông thường. Tuy nhiên, có một số đối số, liên quan đến tính đối xứng, cho thấy là lựa chọn tốt hơn.αα0αα0=00αα0=1/21/2
Mã Python là
# 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)
Mong rằng sẽ giúp!