短い答えは:はい!これは機能し、ベクトルに整数を乗算し、その各コンポーネントの整数部分を取ることと同じくらい簡単です。tn∈(0,1)dm
より長い答えはあなたの直感は正しいということです、実際にはそれは次の選択に応じて結果を混合しています:
- どのシーケンスを選択するか(Halton、Sobolなど)
- 基礎パラメータ(例、2、3、5、...)
- 程度は低いですが、の値です。m
ただし、最近、詳細なブログ投稿「任意の次元でオープンエンドの低不一致シーケンスを簡単に作成する方法に関する、疑似ランダムシーケンスの不合理な効果」を書いています。 HaltonおよびKroneckerシーケンス。
「カバーリング」と呼ばれる投稿のセクションは、特に、低矛盾シーケンスを離散化するというあなたの質問を扱います。
次の画像では、赤の数が少ない正方形(一意の整数格子点を示す)はより均等な分布を意味します。各赤の正方形はセルに青点が含まれていないことを示しています。他の現代的な方法と比較して、シーケンスでさえポイントがどのように分布するかをはっきりと見ることができます。R
解は、追加の反復法(1を法とする)で、黄金比に依存する1次元問題を一般化します。次元の問題の解は、特別な定数に依存し。ここで、は、とような
の最小の正の実数値の値dϕdϕdx
xd+1=x+1
、 、正規の黄金比です。d=1ϕ1=1.618033989...
用、、多くの場合、プラスチック定数と呼ばれ、いくつかの美しい性質を持っているされています。この値は、関連する2次元問題の最適値である可能性が最も高いと推測されていました[Hensley、2002]。d=2ϕ2=1.3247179572...
Jacob Rusがこの2次元の低不一致シーケンスの美しい視覚化を投稿しました。
この特別な定数を使用すると、番目の項の計算は非常に簡単で高速に計算できます。n
R:tn=αα0+nαα(mod1),n=1,2,3,...
whereαα=(1ϕd,1ϕ2d,1ϕ3d,...1ϕdd),
もちろん、これが繰り返しシーケンスと呼ばれる理由は、上記の定義がと同等であるため
R:tn+1=tn+αα(mod1)
ほとんどすべての場合、しても主要な特性は変わりません。そのため、明白な理由から、が通常の選択です。ただし、対称性に関連して、 がより良い選択であることを示唆するいくつかの引数があります。αα0αα0=00αα0=1/21/2
Pythonコードは
# 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)
お役に立てば幸いです。