2Dグリッド上のランダムな敵の配置


11

アイテムと敵をランダムに(またはできるだけランダムに)配置したい。現時点では、XNAのRandomクラスを使用して、Xの場合は800からYの場合は600の数値を生成しています。私はジェネレータをシードしません、多分それは考慮すべきことです。

2Dグリッドでのランダムな敵の配置を改善できる他のテクニックはありますか?


この質問は形式が正しくないようです。ランダムデータのソースを使用せずに、ランダムに配置したいですか?それは矛盾です。実際に何を達成しようとしていますか?
Andrew Russell

XNAのRandomクラスを使用して最小値と最大値の間の数を生成する以外の手法があるかどうか知りたいのですが。私はより明確な質問をしようとします
Robb

1
あなたが話しているRandomクラスは、XNAではなく.NETフレームワークの一部です。ただファイ。
Michael Coleman

@オムニオン-私は承知しています。質問を作成するときに少し疲れました;)
Robb

回答:


16

ランダムな配置では、見た目がランダムではありません。敵をもう少し均等に離したほうがいいでしょう。見てください、この記事ポアソンディスクサンプリングについて、またはブルーノイズについて読みます。


7

救助にショーンハーグリーブス!

http://blogs.msdn.com/b/shawnhar/archive/2009/12/17/the-psychology-of-randomness.aspx http://blogs.msdn.com/b/shawnhar/archive/2010/09 /10/links-5-charles-bloom-on-randomness.aspx

ランダムな分配を考えるとき、あなたは本当に分配を意味します。.Netのランダムはランダムに考えています。あなたはそれを均等にするために他に何かが必要です。リンクされたポアソンディスクサンプリングメソッドamitpは、ニーズに最適に見えます。


+1は言葉を口から出してくれました。ディストリビューションでも常にランダムなディストリビューションと混ざっているようです(私も同じ間違いをしました)
Spooks

0

次のC#コードは、一連の均一なポイントを生成します。

Random rand = new Random(); // creates a new random number generator with a time-based seed
int X, Y;
for(int i = 0; i < numberOfPoints; i++)
{
  X = rand.Next(800); // generates a random int between 0 and 799, inclusive
  Y = rand.Next(600); // generates a random int between 0 and 599, inclusive
  AddPointToSet(X,Y); // write this method however you want
}

パラメータなしでRandom()コンストラクタを使用する場合、作成するRandomオブジェクトは時間に基づいてシードされるため、呼び出しの間に非常に短い時間をおいて繰り返し実行しない限り、基本的にランダムになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.