0

ランダムな数字を作りたいけど、近すぎる場合は、リロールにするか、他の数字から離れた数字にするか、もう少し広げてみます。

私は私が何を望んでいるのか正確にはわからないと思います:/

前もって感謝します

編集:ランダムな数字を作成している理由は、画面の両側にあるユニットの位置を生成するためです。そのため、見栄えを良くするために、本質的にユニットが互いに近づきすぎないようにしたいと考えています。

4

3 に答える 3

1

ランダムな数字を作りたいけど、近すぎる場合は、リロールにするか、他の数字から離れた数字にするか、もう少し広げてみます。

乱数ジェネレーターは、互いに近い数値を生成することがあります。

それらをあまり近づけたくない場合は、それぞれに小さなランダムな摂動を加えた固定数が必要になるかもしれません。

10、20、30、40、および 50 の数字を選択するとします。次に、-3 から +3 までの数字を生成する乱数ジェネレーターを実行します。この乱数をそれぞれに順番に追加します。これにより、一様ではない数値が生成されますが、互いに近すぎません。

于 2013-11-08T02:41:02.690 に答える
0
  1. ランダムな位置を取得
  2. 良くない場合 (他のものに近すぎるなど)、ステップ 1 に進みます。
  3. ほら!あなたは有効な位置を得ました。:) ...

または...すべての有効な位置を事前に計算し、それらをいくつかの配列に配置し、rnd関数を使用して配列インデックスを取得します-配列要素が使用するもの. それがより速い解決策になるはずです(ユニットの数が膨大な場合)...

于 2014-02-23T21:28:16.767 に答える
0

再ロールで十分な場合は、前の値を保存し、次の反復で 2 つの数値の差が小さすぎる場合は、Math.rand() を再度呼び出すことができます。サンプルスペースが小さすぎるのではないでしょうか?

于 2013-11-08T02:34:54.917 に答える