c4droid IDE を使用して、Android 端末用にランダムに生成された世界を持つ単純な ASCII スタイルのゲームを作成しようとしています。これは C++ をサポートしており、基本的にはarray[width][height]
ルールを使用してタイルを生成しています。rand()%2 - 1
歩けるタイルを作成します0
。壁です。しかし、問題があります。マップを「ランダムに」生成するたびに、同じように見えます-rand()
実際にはランダムではないためです。HDDや別の部品が作るエントロピーを利用するという話を聞いたことがあります。問題は、Androidで使用しているため、C ++がJavaほど使用されていないため実装するのが奇妙であるため、Googleで解決策を見つけることができなかったことです。とても短い質問:Androidでc ++を使用して「かなり本物の」乱数を生成するにはどうすればよいですか?
質問する
1156 次
2 に答える
10
で乱数ジェネレーターをシードする必要がありますsrand(time(NULL))
。これにより、コンピューターはシステム時間を使用して疑似乱数を生成できます。
参照へのリンク: http://www.cplusplus.com/reference/clibrary/cstdlib/srand/
編集: rand() 関数をシードする必要があるのは、通常はプログラムの開始時に 1 回だけであることに注意してください。
int main()
{
srand(time(NULL)) //only needed to be called ONCE
//code and rand functions afterward
}
于 2012-11-09T18:24:52.903 に答える
3
rand() は、あなたがやっていることに対してうまくいくはずです。乱数ジェネレーターをシードしていますか?
srand(time(NULL));
// Should be a different set of numbers each time you run.
for(unsigned i = 0; i < 10; ++i) {
cout << rand() % 2 - 1;
}
于 2012-11-09T18:26:06.813 に答える