ピッキング自体は簡単ですが、私は同じ場所にポイントを配置することができないことを確認するのに問題があります。私は当然のことながら再ランダム化することができますが、より良い方法がありますか?どうもありがとう!2D配列に2つのユニークなポイントをランダムに配置する方法はありますか?
答えて
選択Kインデックス:
ではなく、このようI2を生成します。
最初に、2D配列をフラットにして、ベクトルに格納します。vector elems;
#include <vector>
#include <algorithm>
using namespace std;
.... initialize elems to whatever you want, here all zeros ......
vector<int> elems (N*M, 0);
// assigning your indices from 0 to elems.size()-1
vector<int> index (elems.size());
for (int i=0; i<index.size(); i++)
{
index[i] = i;
}
// now random permute
random_shuffle (index.begin(), index.end());
// now assign the elements to whatever you want, here assign them to 1
elems[index[0]] = 1;
elems[index[1]] = 1;
あなたは1D 私にあなたの2D指数のx、yのを線形化することにより、これを行うことができます。
次元配列がMxNであるとします。
でランダム整数を生成する[0、M×N個):
int i1 = rand() % (M * N);
あなたの2次元配列インデックスは次のようになります
int x1 = i1 % M;
int y1 = i1/M;
今の2Dアレイを覆う第2の1Dのインデックスを生成するが、あなたが以前にヒットしたものではありません。当然の場合これら二つの1Dのインデックスは常に、異なるであろう
int i2 = (rand() % (M * N - 1) + i1 + 1) % (M * N);
:あなたは)乱数[0、M×N個-1を生成することにより、これを行うと、最初の発生数でこの1Dインデックスを循環することができMxNは1x1ではありません。
2Dインデックスのあなたの第二の対も同様である。
int x2 = i2 % M;
int y2 = i2/M;
アイデアは良いですが、 'i2'の実際の表現は間違っています。 –
が良くなっていますが、それでもかなり正しくはありません;)ヒント:次の位置に移動します。 –
junjanesほとんど溶液を有しているが、実際には2回、同じインデックスを生成妨げません。ランダム最初シャッフリングランダムアレイに相当し、その後、最初のk個のインデックスを取るN可能な位置から
int i2 = rand() % (M * N - 1);
if (i2 >= i1) ++i2;
- 1. 2D配列のランダムに選択された場所に文字列を配置する方法
- 2. 配列を2つの配列にランダム化する
- 3. 2D配列を永続ストレージに保存する方法はありますか?
- 4. 2D配列内の要素にユニークなIDを与える方法は?
- 5. Visual C#2つの1D文字列[]配列を1つの2D文字列[、]配列にマージする方法
- 6. 2つの配列を同じ方法でランダム化します。
- 7. 2次元配列をランダムに塗りつぶします
- 8. ペインのランダムな場所にシェイプを配置する方法は?
- 9. 2D配列の一部を取得する方法はありますか?
- 10. 2つの2D numpy配列を2つのタプルの1つの2次元配列に結合する
- 11. 2つのランダムな画像を配列から返します。
- 12. プログラムにコンパイラを配置する方法はありますか?
- 13. ランダムな単語の配列をハッシュタグの配列にフィルタリングする方法は?
- 14. 2dリストを2d numpy配列に変換する方法は?
- 15. 2D配列の配列を初期化する方法は?
- 16. matlabに配列番号をランダムに配置する
- 17. 異なるクラスにある2つの配列を比較する方法は?
- 18. 2つのEAGLLayerを1つのUIViewに配置する方法
- 19. PHPで2つの配列のユニークな要素を見つけるには?
- 20. foreachループ内に2つの配列がありますか?
- 21. j2me - 2dポイントの配列を45度ずつ回転させる
- 22. ランダムな位置から別の配列にコピーする
- 23. 2D配列にhexgridの頂点位置を格納する方法は?
- 24. テキストのランダムな配置を作成するのに役立つ
- 25. ボタンをランダムに配置する方法は?
- 26. 配列の位置を保持しながら4d numpy配列を2d配列に変更する
- 27. いくつかの要素をテーブルセルの上に配置する方法と、下に配置する方法はありますか?
- 28. ランダムな値をある配列から別の配列に繰り返し渡します。
- 29. 配列に2つの要素を追加する方法は?
- 30. はランダムに配列
これはどのような用途ですか?他のランダム座標を選択することが許容できない理由はありますか? –
ランダムな可能性の1つは、同じポイントを連続して2回取得することです。 – kenny
もう1つの可能性は、同じポイントを連続して1000回取得することです(したがって、リローリングは理想的ではありません)。 –