以下の特性を持つ確率的ベクトルコレクション(VBA)を作成する必要があります。a)各ベクトルは10次元の配列です。 b)ベクトルのすべてのnull以外の成分は同じ値です。この条件では、コレクションにはすべての可能なベクトルが含まれている必要があります。順列を使って確率的ベクトルをソートする
私はこのようなコレクションにベクトルを一つずつ追加することでこれをやって開始しました:
Dim DB As New Collection: Set DB = New Collection
'First set:
DB.Add Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0)
DB.Add Array(0, 1, 0, 0, 0, 0, 0, 0, 0, 0)
DB.Add Array(0, 0, 1, 0, 0, 0, 0, 0, 0, 0)
...
DB.Add Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 1)
'Second set:
DB.Add Array(1/2, 1/2, 0, 0, 0, 0, 0, 0, 0, 0)
DB.Add Array(1/2, 0, 1/2, 0, 0, 0, 0, 0, 0, 0)
DB.Add Array(1/2, 0, 0, 1/2, 0, 0, 0, 0, 0, 0)
...
DB.Add Array(0, 0, 0, 0, 0, 0, 0, 0, 1/2, 1/2)
'Third set:
DB.Add Array(1/3, 1/3, 1/3, 0, 0, 0, 0, 0, 0, 0)
DB.Add Array(1/3, 1/3, 0, 1/3, 0, 0, 0, 0, 0, 0)
...
などなど(全体の第十セットを構成する)最後のベクトルを取得するまで:
...
'Tenth set:
DB.Add Array(1/10, 1/10, 1/10, 1/10, 1/10, 1/10, 1/10, 1/10, 1/10, 1/10)
あなたが知っているように、コレクションは1023のベクトルになりますので、私の質問は非常にシンプルです(質問は唯一の単純なものだと思います):1023ベクトルを明示的に書くことなくこれを行う方法はありますか? ?
私は、私がこれまでに得たものをお見せしましょう:すべての
まず、私は1の代わりに分数のコンポーネントのと同じ配列を取得することにより、結果を得ることができます。
第2に、最初のセット自体はできません。どのように私は何かを作ることができます
For x = 0 to 9
DB.Add Array(x, 0, 0, 0, 0, 0, 0, 0, 0, 0)
Next x
結果私はふりをするのですか?私はコードの最後のビットが私にベクトルの最初のセットを与えないことを知っていることに注意してください...それはあなたに私が求めているもののアイデアを与えることです。
第3位では、最初のセットの問題について助けを得たら、他のセットでも同じことができると思います。あなたが10代目までのスクリプトをすべて手伝ってくれることを熱望しているのであれば、私はいいえ、ええと言う人は誰ですか?
私はそれが少しトリッキーなことを知っています!どんな助けも非常に高く評価されます。そして、いつものように、あなたにすべて前もって感謝します。
偉大な答え!私はあなたの戦略を完全に得ました!実際に、私はあなたが投稿するコードが必要ないこともとてもうまくいきました!あなたの答えをありがとう!後で私は問題に私のアプローチを投稿します!もう一度、ありがとうございます:) – Pspl
ありがとう - 0か何かの配列を探しているので、おそらく '(2^N)-1'の合計の組み合わせを取り除くことができます。ここで' N'は数値ですのスロット。 –
はい!私が知っています!配列次元を変数にする必要がある場合は、おそらく便利です。しかし、今のところ、10次元配列の場合にのみ必要です。だからそれは常に1023 ... – Pspl