三次元空間にある複数の点を、大きな偏りのないようにいくつか選択するアルゴリズムを教えてください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/04/26 10:14:52
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント35pt

「三次元空間にある複数の点」というのが、あらかじめ用意されているものであれば、各々に連番を付けて、乱数で選択するという方法があります。


あらかじめ用意されているのでなければ、座標の定義域を規定し、その範囲内の座標値を乱数で発生させるのが妥当でしょう。


なお、処理系によっては、組み込みの乱数に偏りがある場合があります。対策としては、「良い乱数・悪い乱数」を参考にしてください。

id:kent013

pahooさん

ありがとうございます。

sibazyunさんの指摘の通り、点が配列の中に平均的に分布しているのならば乱数でいいと思いますが、

そうではない場合、偏りが出てしまうと思います。

言葉足らずで申し訳ありません。

2009/04/26 01:20:38
id:v81 No.2

回答回数1ベストアンサー獲得回数0

ポイント35pt

K平均法を使うとお望みのことができるかもしれませんね。



クラスタリングの定番アルゴリズム「K-means法」をビジュアライズしてみた

http://d.hatena.ne.jp/nitoyon/20090409/kmeans_visualise


3D版!「K-Means法」ビジュアライズしてみた

http://d.hatena.ne.jp/nitoyon/20090413/kmeans_visualize_3d

id:kent013

v81さんありがとうございます。

とりあえず、クラスタリングするということにします。

2009/04/26 10:14:34
  • id:sibazyun
    ・もともとの点の分布と、「偏りのない」の意味によると思います。
    ・1次元で考えてみます。例えば0-10の間の0.1付近に9点、9.9のところに1点あるとします。このとき、
    (a)「0.1付近にある1点と9.9のところにある1点を選ぶ」ことが偏りのないということでしょうか。
    (b)それとも近い順に並べなおして、3番目と8番目を選ぶ、結果として、2点とも0.1付近にある」ことが偏りのないことでしょうか。
  • id:kent013
    sibazyunさん、
    ありがとうございます。
    想定しているのは(a)です。
  • id:kent013
    よく考えたら、もしかしてクラスタリングして各クラスタの中心点に近い点を選択するのが正しい方法でしょうか。
    なんとなく、もっと簡単なサンプリングのアルゴリズムがあるのではないかと思っているのですが。
  • id:pahoo
    > sibazyunさんの指摘の通り、点が配列の中に平均的に分布しているのならば
    > 乱数でいいと思いますが、そうではない場合、偏りが出てしまうと思います。

    ということは、
    ・あらかじめ点が存在している
    ・その中から座標位置に偏りがないように取り出したい
    という要件ですか?


    となると、あらかじめ存在している点から“偏りがない座標位置の点を取り出す”という行為そのものに“偏りがある”ことになってしまいます。
    なぜなら、あらかじめ存在している点の座標位置が偏っているのは何らかの意味があるからです。それを偏りがないように取り出す行為は恣意的であり、逆に偏りを発生させることになります。

この質問への反応(ブックマークコメント)

トラックバック

  • 趣味プログラミング 最近、忙しかったけど少しだけ余裕が見えてきました。 ので久しぶりに記事を書こうかなと思ったけど、気合を入れちゃいそうなのでガス抜きに適当なエントリを書こ
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません