「三次元空間にある複数の点」というのが、あらかじめ用意されているものであれば、各々に連番を付けて、乱数で選択するという方法があります。
あらかじめ用意されているのでなければ、座標の定義域を規定し、その範囲内の座標値を乱数で発生させるのが妥当でしょう。
なお、処理系によっては、組み込みの乱数に偏りがある場合があります。対策としては、「良い乱数・悪い乱数」を参考にしてください。
pahooさん
ありがとうございます。
sibazyunさんの指摘の通り、点が配列の中に平均的に分布しているのならば乱数でいいと思いますが、
そうではない場合、偏りが出てしまうと思います。
言葉足らずで申し訳ありません。
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
v81さんありがとうございます。
とりあえず、クラスタリングするということにします。
・1次元で考えてみます。例えば0-10の間の0.1付近に9点、9.9のところに1点あるとします。このとき、
(a)「0.1付近にある1点と9.9のところにある1点を選ぶ」ことが偏りのないということでしょうか。
(b)それとも近い順に並べなおして、3番目と8番目を選ぶ、結果として、2点とも0.1付近にある」ことが偏りのないことでしょうか。
ありがとうございます。
想定しているのは(a)です。
なんとなく、もっと簡単なサンプリングのアルゴリズムがあるのではないかと思っているのですが。
> 乱数でいいと思いますが、そうではない場合、偏りが出てしまうと思います。
ということは、
・あらかじめ点が存在している
・その中から座標位置に偏りがないように取り出したい
という要件ですか?
となると、あらかじめ存在している点から“偏りがない座標位置の点を取り出す”という行為そのものに“偏りがある”ことになってしまいます。
なぜなら、あらかじめ存在している点の座標位置が偏っているのは何らかの意味があるからです。それを偏りがないように取り出す行為は恣意的であり、逆に偏りを発生させることになります。