10

反対のことが何度も尋ねられたと思いますが、悪い乱数を生成する方法についての答えが見つかりませんでした。

クラスター分析用の小さなプログラムを作成し、テスト用にランダムなポイントを生成したいと考えています。ランダムな座標で 1000 ポイントを挿入すると、それらはフィールド全体に散らばり、クラスター分析の価値がなくなります。

クラスターを構築する乱数を生成する簡単な方法はありますか?

私はすでに使用していないrandom()が、random()*random()正規分布の数値を生成することを考えていました (スタック オーバーフローのどこかでこれを読んだと思います)。

2 番目のアプローチは、ランダムにいくつかのエリアを選択し、このエリアでポイント生成を再度実行することです。これにより、もちろんこのエリアにクラスターが生成されます。

もっと良いアイデアはありますか?

4

5 に答える 5

7

(完全にランダムなクラスターではなく) 適切に形成されたクラスターを意図的に作成している場合は、2 つを組み合わせてクラスターの中心を見つけ、その周りに正規分布で多くの点を配置​​できます。

デカルト座標(x、y)でも同様に機能します。放射状の方法を使用して、特定のクラスターのポイントを分散できます。ランダムな角度 (0 ~ 2PI ラジアン) を選択してから、半径を選択します。円周は半径に比例するため、面積分布は中心に近づくほど密度が高くなりますが、特定の半径ごとの分布は同じになります。放射分布を変更して、より密集したクラスターを生成します。

または、自然なクラスタリングを使用して、半ランダムな点分布に現実世界の派生データを使用できます。最近、私はかなりの地理空間クラスター分析を行っています。このために、私は現実世界のデータを使用しました。そしてレストランの場所。別の提案: 恒星カタログまたは銀河カタログを使用できます。

于 2010-11-04T16:22:03.910 に答える
5

いくつかのアンカーを生成します。真の乱数。次に、それらの周囲にノイズを生成します。

anchor + dist * (random() - 0.5))

これにより、クラスター化された数値が生成され、距離が均等に分散されますdist

于 2010-11-04T16:19:00.720 に答える
2
  • モデルにディメンションを追加します。
  • 不規則な(つまり、平らではない)面を描きます。
  • 拡張空間で数値を生成します。
  • 表面の片側にあるすべての数字を破棄します。
  • 残りのすべての数値から、追加の次元を削除します。
于 2010-11-04T16:37:24.490 に答える
1

誤解しているかもしれませんが、gnu科学ライブラリ(cで記述)には多くの分布が記述されています-そのライブラリのガウス/ポアソンなどから座標を選択できませんでしたか?

http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Distributions.html

これらは、リンクからのポアソン分布の簡単な例も提供します。

分布を制限する必要がある場合(たとえば、y座標が-1以上)、gslの一様分布からの棄却サンプリングによってそれを実現できます。

祝福、トム

于 2010-11-04T16:57:52.680 に答える
0

私が最初に考えたのは、線形合同ジェネレーターを使用して独自に実装し、必要に応じて十分に低い周期になるまで係数を試すことができるということでした。本当に低いm係数がうまくいくはずです。

また、事前に選択されたいくつかのポイントの周りで適切な RNG を実行してクラスターを作成するという 2 番目のアイデアも気に入っています。この方法でクラスターの特定の領域をターゲットにするか、それらをランダムに生成することもできます。

于 2010-11-04T16:22:40.570 に答える