ヘッドライン

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

プログラミングでは乱数の生成が意外と難しい

1 : フードコーディネーター(西日本) 投稿日:2010/08/05(木) 14:37:43.11 ID:/0YMe0LZ●
foldrだけではなくfoldlも融合変換の対象に

第37回で説明したように,fold/buildではfoldrを使って「データ構造を使用する消費者」を定義することで
融合変換可能な優良消費者を用意します。しかし,融合変換の対象を様々な処理に広げていこうとすると,
「foldrを使って消費者を定義する」という点が問題になります。
データ構造を対象にする処理の中には,foldrよりもfoldlや別の再帰関数を使って定義したほうが効率の良い処理もあります。
しかし,fold/buildでは優良消費者を定義するのにfoldrを使用するという制約があるため,「ある処理にとっての効率的な定義」と
「融合変換によって効率化できる定義」の二つがうまく両立しない可能性があります。
foldrを使って定義された関数の処理の効率が悪かったとしても,その関数が使うリストが「buildを使って定義された優良生産者」
によって作成される場合には,fold/buildでfoldrが削除されるため,特に問題にはなりません。しかし,リストが「buildを使わずに
定義された生産者」によって作成される場合には,foldrを使って定義された効率の悪い消費者の定義がそのまま残ってしまいます。
foldlを使って関数を定義すれば効率の良い消費者を定義できますが,今度は消費者が融合変換の対象にならず,
中間データ構造を作成するため,別の部分で性能の劣化が起こってしまいます。

http://itpro.nikkeibp.co.jp/article/COLUMN/20100803/350961/

6 : 騎手(アラバマ州) 投稿日:2010/08/05(木) 14:39:33.51 ID:cI50Yzkb
どんなに頑張っても偏りが出てくる

186 : 殺し屋(東京都) 投稿日:2010/08/05(木) 17:19:07.30 ID:t/g46X9h
>>6
偏りが出ない乱数は不完全

7 : MPS AA-12(神奈川県) 投稿日:2010/08/05(木) 14:40:00.60 ID:tWK9LFAp
OpenSSLのPRNGライブラリや、OSが持ってる同等のライブラリ使えばい
最近はCPUとかチップセットに乱数発生器もってるハードもある

8 : シナリオライター(徳島県) 投稿日:2010/08/05(木) 14:41:39.00 ID:w/v1jtVk
乱数テーブル回すために数百回戦闘しないとレアモンスターに出会えないFF1,2
鉄巨人逃げるしorz

11 : 小池さん 投稿日:2010/08/05(木) 14:42:29.02 ID:mmo48gIP
乱数の理論も確立していなかったと思う。

13 : 騎手(アラバマ州) 投稿日:2010/08/05(木) 14:45:18.39 ID:VEPvf+1O
完全にランダムな乱数ってコンピューターには作れないって聞いたよ

30 : 鵜飼い(アラバマ州) 投稿日:2010/08/05(木) 14:56:07.99 ID:PROPprTg
>>13
5分の1だったら5個あるうちの1つを選ぶ。これで完全な乱数じゃないの?

33 : 議員(北海道) 投稿日:2010/08/05(木) 14:57:16.09 ID:HHAGthzn
>>30
どういう基準で選ばせるの?コンピュータはそれを入力しないと選んでなんてくれないんだよ

36 : 騎手(アラバマ州) 投稿日:2010/08/05(木) 14:58:38.71 ID:VEPvf+1O
>>33
「ランダムに選べ」って

42 : 鵜飼い(アラバマ州) 投稿日:2010/08/05(木) 15:02:10.20 ID:PROPprTg
>>33
そりゃあてきとーに選べって命令するんだろう。

179 : 騎手(宮城県) 投稿日:2010/08/05(木) 16:58:46.44 ID:2fhrmYL2
>>42
単純に「適当に選べ」ってやっても、ダメなんだよ。
例えばサイコロの目を適当に出せってやって
「1536241632」と出たとして、これは確かに適当に選んだ感じだけど、
もう一度同じプログラムをやり直すと
「1536241632」って同じのが出ちゃうんだ…。

181 : 芸人(東京都) 投稿日:2010/08/05(木) 17:03:57.36 ID:j6o841mw
>>179
そこに現在時間をかけるとかしたらええやん

192 : サウンドクリエーター(愛媛県) 投稿日:2010/08/05(木) 17:41:19.94 ID:ovYD+q4J
>>179
> 「1536241632」と出たとして

10回やって同じ数字が一度しか出ないとか偏りすぎ。

214 : 探偵(鹿児島県) 投稿日:2010/08/05(木) 18:14:19.83 ID:RN2w0Dhp
>>192
この場合数学的に考えると10回の指向で同じ数字は何回出るのが平均なの?
1つの数値に限って言えば1回だけど0-9のすべての数字に付いて考えると分からん。

238 : 田作(catv?) 投稿日:2010/08/05(木) 18:30:32.29 ID:+Q4TgVd4
>>214
平均? 全ての数字が1回ずつ現れるのが平均値

249 : 探偵(鹿児島県) 投稿日:2010/08/05(木) 18:50:27.09 ID:RN2w0Dhp
>>238


258 :132人目の素数さん [sage] :2010/08/05(木) 18:38:55
ランダムな十桁の数字があった時
一番多い場合は数字が何回被った場合なのでしょうか?


9318425607 被り0
9310425607 被り1
0210422601 被り4

ひとつの数字に限った場合1回だけ出る被り0が一番多いと思いますが
全ての数字について考えた場合、分かりません。

256 : 探偵(鹿児島県) 投稿日:2010/08/05(木) 19:03:30.10 ID:RN2w0Dhp
>>249
プログラム書いてみた。

@repeatCountArray=(0)x9;

for($i=0; $i<100000; $i++) {
@array=(-1)x10;
$repeatCount=0;
for($j=0; $j<10; $j++) {
$repeatCount++ if(++@array[int(rand(10))]);
}
$repeatCountArray[$repeatCount]++;
}

foreach(@repeatCountArray){
print "$_ ";
}
print "$_\n";


実行結果
d:\aiueo>random10.pl
random10.pl
24 1670 13605 35525 34527 12930 1663 56 0

被り4が一番多いのか、意外と多いなぁ

358 : マッサージ師(catv?) 投稿日:2010/08/06(金) 16:59:31.66 ID:TuafF+i+
>>13
そんなことはない。
ハードウェア乱数生成器使えばよい。

14 : トリマー(東京都) 投稿日:2010/08/05(木) 14:46:33.26 ID:McDGMlMr
お前らにそんな高度な乱数は必要ないだろ

15 : 大学芋(東京都) 投稿日:2010/08/05(木) 14:47:30.02 ID:ciVDwhQn
>>14
国防総省のサーバーにアタックするとき必要なんだろ

16 : ノンフィクション作家(不明なsoftbank) 投稿日:2010/08/05(木) 14:48:16.38 ID:Rw2M5rpp
なんで生物は自分で乱数を生成できるんだろう?

19 : スリ(神奈川県) 投稿日:2010/08/05(木) 14:49:43.95 ID:tPoSE49Z
>>16
曖昧で適当だから

310 : 官僚(西日本) 投稿日:2010/08/06(金) 00:23:35.25 ID:Ga4D6Er+
>>16 完全な状態選択という意味合いでは
実はランダムではなく、有る一定の規則性があるのだと思う

自然界も突き詰めれば、完全なアナログ連続の世界でなく
量子の様にデジタルな不連続な世界なのだから

問題はだ不連続であってもその状態の乗数
掛算で自省が表されるから、マクロ的に見れば乱数化してるように見えるのだろう

17 : 社会保険労務士(長野県) 投稿日:2010/08/05(木) 14:48:49.67 ID:8vMS7cbM
無理数の小数点部分とかでもやっぱりかなり偏りあるのかな。

23 : 鵜飼い(宮崎県) 投稿日:2010/08/05(木) 14:52:07.34 ID:2apRg2JL
Cの標準関数のrand()の下位ビットの周期が極端に短いとか、
偶数と奇数が交互にくるとか都市伝説信じてるやつ多いな。

302 : 火狐厨(大阪府) 投稿日:2010/08/05(木) 22:56:20.54 ID:8OsPBueF
>>23
> Cの標準関数のrand()の下位ビットの周期が極端に短いとか、
> 偶数と奇数が交互にくるとか都市伝説信じてるやつ多いな。

昔はそうだったのを、今でもそのままだと信じてるんだよなそういう奴って。

「カルドセプトサーガ」っていうゲームのバグで、「さいころが必ず偶数奇数交互に出る」、
つまり二人プレイだと「偶数だけが出るプレイヤー」と「奇数だけが出るプレイヤー」になるってのがあったんだが、
そのときに知ったかぶりしたいのかなんなのか知らんが

「これはrand()を使ったからだなそうに決まってる」みたいな固定観念に固まって叩いてた馬鹿がいた。


28 : 歯科衛生士(東日本) 投稿日:2010/08/05(木) 14:55:43.76 ID:Tif2Tkf2
ミリ秒数→md5→数値化

31 : AV男優(東京都) 投稿日:2010/08/05(木) 14:56:34.42 ID:Za+u5/zA
メルセンヌツイスタ!!!!

60 : FR-F1(長屋) 投稿日:2010/08/05(木) 15:08:58.90 ID:3JTucjKQ
>>31
どんだけ中二テイストの先駆けだよ

32 : 騎手(東京都) 投稿日:2010/08/05(木) 14:57:13.67 ID:AyHDGMTw
日曜プログラミングで使う分にはまず全く問題がないレベルの乱数が普通に使えるだろ今は

34 : 行政書士(長野県) 投稿日:2010/08/05(木) 14:57:29.63 ID:0lDLBTtV
ミリ秒じゃ何か不都合なことでもあるの?

41 : 騎手(アラバマ州) 投稿日:2010/08/05(木) 15:01:41.82 ID:Jx4kD6AE
>>34
乱数を定期的に繰り返し発生させるような用途だと偏りそう

38 : キリスト教信者(アラバマ州) 投稿日:2010/08/05(木) 15:00:16.75 ID:7l9sqC4c
乱数関数に乱数関数を使って2重にすればと思ったけどダメだな

40 : 学芸員(神奈川県) 投稿日:2010/08/05(木) 15:01:17.61 ID:SGIZgu8l
昔、ゲームとか作ったときは、ボタンの入力待ちのときにランダム計算をループで動かして、
偏りがでないようにするとかやったなぁ。

48 : 鵜飼い(宮崎県) 投稿日:2010/08/05(木) 15:05:09.53 ID:2apRg2JL
>>40
ファミコンのゲームでタイトル画面を表示してスタートボタンを押すまでの
間隔を乱数のシードにしてたら、電源入れてゲームが始まるまでスタートボタン
を押しっぱなしのせっかちなユーザーが多数いて、毎回敵の出現パターンが
同じってバグがあるのがあったな。

43 : 鵜飼い(埼玉県) 投稿日:2010/08/05(木) 15:03:38.38 ID:F6U6hQAV
a(n+1) = mod(a + b*am)
基本だな、そんな高度な乱数あまり使わんし

45 : 人間の恥(dion軍) 投稿日:2010/08/05(木) 15:03:54.76 ID:F/jnplGp
ポリゴンでサイコロを作って、物理エンジンを組み込む。で、転がす。

49 : 議員(北海道) 投稿日:2010/08/05(木) 15:05:18.30 ID:HHAGthzn
>>45
まったく同じ条件化で振れば、たぶん何度振っても同じ目なんじゃないかな・・・

53 : 中卒(空) 投稿日:2010/08/05(木) 15:06:35.15 ID:Q9GWgc7B
何かしら法則性があるかぎり、擬似ランダムにはなってもランダムにはならないだろ

55 : サクソニア セミ・ポンプ(catv?) 投稿日:2010/08/05(木) 15:06:40.14 ID:oCm0pOpv
というか乱数なんて何で自前で計算しようとするんだ
ちゃんと検証済みのライブラリがあるのに

56 : 弁理士(東京都) 投稿日:2010/08/05(木) 15:07:31.64 ID:qGifs3CM
門外だけどカルドセプトの出目みたいなのはミリ秒で十分じゃねえの?

67 : 鵜飼い(宮崎県) 投稿日:2010/08/05(木) 15:11:28.37 ID:2apRg2JL
>>56
そのゲームの話題が盛り上がってるときに、標準関数つかってたから
周期が短いんだって解説してるやつ多かったな。

実際は標準関数使わずに乱数ルーチン自作して自爆だろうな。


291 : かまってちゃん(栃木県) 投稿日:2010/08/05(木) 22:34:30.58 ID:Di3H6HA3
>>56
たぶんネット対戦だからPARのようなチートに対処しようとして出目を固定にしたんじゃないかと推測してる
出目が固定なら、複数機で数値の検証ができるから、チートがわかるしね。
ただまさか乱数発生ルーチンがあんなに偏ってるとは思ってなかったんだろうw

62 : フランキ・スパス15(宮城県) 投稿日:2010/08/05(木) 15:09:47.18 ID:VjHJYKPd
乱数は、局所的に見たら偏りがあって「当たり前」。
それが嫌なら、プログラム言語に用意されている「一様(字はこれで合ってたっけ?)乱数」(疑似乱数)でも使いやがれw

64 : 脚本家(東京都) 投稿日:2010/08/05(木) 15:10:22.94 ID:OLLdgHGe
映像や音声のセンサーを付けて乱数に絡めればいい
最初からランダムなものを利用すればいいんだよ

71 : FR-F1(栃木県) 投稿日:2010/08/05(木) 15:12:50.34 ID:QO96sam2
仮に均等に分散したら乱数じゃなくね?

79 : スポーツ選手(東京都) 投稿日:2010/08/05(木) 15:16:04.72 ID:f8uP2Gxh
>>71
大数スケールでは分散しなきゃだめだろ

72 : モデラー(沖縄県) 投稿日:2010/08/05(木) 15:13:43.51 ID:uX2y69iT
ある数式を使って、入力した数値を計算させて配列に格納して行き、そしてさらに新しい数値を入力して別の数式で割り出した値の要素番号を参照させればいいんじゃね?

73 : 文筆家(神奈川県) 投稿日:2010/08/05(木) 15:13:54.66 ID:B3mslQbM
乱数生成など必要無い。
偏りの無い乱数表を作っといて順番に使うのだ。

78 : 探偵(鹿児島県) 投稿日:2010/08/05(木) 15:15:51.32 ID:RN2w0Dhp
>>73
その乱数表はどうやって作るの?

80 : 探偵(鹿児島県) 投稿日:2010/08/05(木) 15:16:54.75 ID:RN2w0Dhp
javaとかのライブラリに入ってるランダム関数ってどんなアルゴリズムなの!

86 : 鵜飼い(宮崎県) 投稿日:2010/08/05(木) 15:20:49.05 ID:2apRg2JL
>>80
昔は線形合同法だったような。

85 : 鵜飼い(コネチカット州) 投稿日:2010/08/05(木) 15:20:12.39 ID:9zt+uu+Y
もうあると思うけど、ノイズを使ってアナログ的に作るとかどうなんよ

91 : 大学芋(東京都) 投稿日:2010/08/05(木) 15:24:08.78 ID:ciVDwhQn
>>85
偏りのないノイズを作るのって乱数作るの並に難しくね

94 : 文筆家(神奈川県) 投稿日:2010/08/05(木) 15:25:41.28 ID:B3mslQbM
>>85
コンピューターの外から無関係な数値(時間とか)を持ってくるのは普通。

127 : げつようび(東京都) 投稿日:2010/08/05(木) 16:05:04.01 ID:P+tjHftV
>>85
CPUに入ってる乱数ジェネレータなんかで
半導体の接合ノイズから乱数を発生させてるのがある

87 : 鵜飼い(東京都) 投稿日:2010/08/05(木) 15:21:19.68 ID:R/8wHd1f
何を持って偏りとするかだな。
単純に1~10までの数字を100回抜き出して、
抜き出された回数を全て同じにするのは簡単。
10回抜き出す毎に抜き出された回数を同じにすることも簡単。

89 : バレエダンサー(北海道) 投稿日:2010/08/05(木) 15:22:13.80 ID:y5oNwepd
単純に○○は5%、▲▲は2%の確率で選ばれるって書きかたじゃ駄目なのか

92 : 鵜飼い(東京都) 投稿日:2010/08/05(木) 15:24:29.11 ID:R/8wHd1f
>>89
それだと2%が何度も連続して選ばれる可能性がゼロじゃない以上、偏りが生じるよ

90 : 文筆家(神奈川県) 投稿日:2010/08/05(木) 15:22:53.44 ID:B3mslQbM
時間はやめてCPU温度でも組み込もうぜ。

93 : 宗教家(北海道) 投稿日:2010/08/05(木) 15:25:12.03 ID:8PWoF9Pe
おまえらに朗報
ハードウェア乱数生成器というものが存在する

103 : 鵜飼い(宮崎県) 投稿日:2010/08/05(木) 15:33:05.46 ID:2apRg2JL
>>93
linuxとか、キーボードとかからの情報で乱数つくるんだよな。
エントロピーが足りなくなったら乱数ができなくなるとかどうとか
みたいな文章を見た記憶がある。

99 : 鵜飼い(アラバマ州) 投稿日:2010/08/05(木) 15:28:20.24 ID:PROPprTg
こういう機械は発射の精度に誤差があるから毎回違う数字になるの?
http://www.takarakuji-dream.jp/stream_data/loto6-507-b.asx

101 : VSS(東京都) 投稿日:2010/08/05(木) 15:30:22.57 ID:0sJrlFH+
円周率演算みたいに、乱数も技術的に競ってたりするの?

104 : 作家(京都府) 投稿日:2010/08/05(木) 15:36:02.98 ID:0gK8+M7U
時間とプログラムカウンタやインデックスレジスタの値と、
あと適当なワークエリアの内容を足して余りを採る

ゲームならそんな感じでいいだろ
要は再現性が低ければ良い

逆にシミュレーションだと、再現性がある方が色々便利だぞ

108 : フランキ・スパス15(宮城県) 投稿日:2010/08/05(木) 15:38:35.29 ID:VjHJYKPd
昔、ある符号列(長さはまちまち)を発生させようとして・・・
・わざと不安定な発振器を4つ用意して、それぞれ別の周波数で発振させる。
・それをANDしたりORしたもの(組み合わせは忘れた)を、一定期間カウント。
・さらに、前の符号の発生期間中もカウント。
もちろん、最大アドレス(設定で変更可能)以上は出ないよう、カウンターをリセット。
これでほぼランダムのアドレスを発生させて、メモリから符号を呼び出していた。

110 : スリ(岩手県) 投稿日:2010/08/05(木) 15:45:32.25 ID:kJuN35rv
乱数表を二枚持っておいて、一回使うごとに片方はひとつずらしてったらどうよ

114 : スリ(岩手県) 投稿日:2010/08/05(木) 15:51:52.90 ID:kJuN35rv
ずらして得た生データ回数ソーティングとか

やりようはいろいろ

117 : 騎手(アラバマ州) 投稿日:2010/08/05(木) 15:55:57.48 ID:Jx4kD6AE
乱数の条件として、均等に散らばる事ってのがあるけど、
あまり完璧に均等に散らばると
「ここまで赤が多かったから次は黒の可能性が高い」
みたいに予想出来ちゃって乱数としては都合悪いんじゃね?

137 : 探偵(鹿児島県) 投稿日:2010/08/05(木) 16:14:58.70 ID:RN2w0Dhp
>>117
サイコロを1万回振れば大体均等に1/6ずつになるけど
だからといって今3の目が出たから次は3以外の目が出るとはならないんじゃ

134 : 職人(長屋) 投稿日:2010/08/05(木) 16:14:04.45 ID:Zu5H50O2
簡単な乱数の生成方法
マルコフ過程解析をやって
マルコフ性のない数値だったら乱数とみとめる。
このようなアルゴリズムでやればOK

142 : タンタンメン(三重県) 投稿日:2010/08/05(木) 16:18:48.49 ID:rU/ruHxB
何月何日何時何分何秒という数字を並べて、素因数分解すればいい

何秒というのがある以上、1秒単位で数字は変わるだろ?

146 : 職人(長屋) 投稿日:2010/08/05(木) 16:20:45.90 ID:Zu5H50O2
たしか正確な乱数を出すエンジンって数百万ぐらいで売れるんだよな
お前らも作って一攫千金ねらえよ

147 : スリ(岩手県) 投稿日:2010/08/05(木) 16:21:49.98 ID:kJuN35rv
書きたくないが量子コンピュータ素子はコンプトン効果を用いているので乱数発生器としてしか機能しない らしい ぞ。

152 : 騎手(大阪府) 投稿日:2010/08/05(木) 16:23:39.60 ID:jMGs7rcO
どういう状況を完全な乱数と定義するのか

153 : スリ(岩手県) 投稿日:2010/08/05(木) 16:24:44.50 ID:kJuN35rv
なんとなく じゃねえの

二ケタでずーっとあってまったく連続数字無かったら不満 みたいな

159 : ホスト(catv?) 投稿日:2010/08/05(木) 16:27:48.96 ID:jXeoAUC+
>>152,153
定義あるんだよちゃんと 知らずに語ってんのか

http://ja.wikipedia.org/wiki/乱数
http://ja.wikipedia.org/wiki/擬似乱数
http://ja.wikipedia.org/wiki//dev/random

157 : 脚本家(愛知県) 投稿日:2010/08/05(木) 16:26:38.41 ID:ts3sCyXR
リアルなサイコロを拾って転がしすマニピュレーターと
サイコロの目を読み取るイメージセンサーでいいんじゃないの?
それでもサイコロが精密じゃない場合には完璧な乱数は得られないけどな

165 : 中国人(dion軍) 投稿日:2010/08/05(木) 16:34:58.81 ID:LdxPUvsA
一度出た数字はカウントしといて全部出切るまで出ないようにすれば完璧

169 : げつようび(東京都) 投稿日:2010/08/05(木) 16:47:05.74 ID:P+tjHftV
>>165
そうすると一度出た値はもう出ないと予想できちゃうじゃないか

167 : 税理士(東京都) 投稿日:2010/08/05(木) 16:44:45.08 ID:aMoDjWbV
Rの疑似乱数ってどうなんだ?
bootstrap使ったデータ分析しようと思うんだが、乱数が偏ってたらお話にならん

172 : 鵜飼い(catv?) 投稿日:2010/08/05(木) 16:49:28.85 ID:FgYkwGF6
Knuth先生の簡易乱数発生アルゴリズムはダメなん?

173 : 画家(関西地方) 投稿日:2010/08/05(木) 16:51:13.60 ID:WrfdXv3a
自然界で起こる現象で完全ランダムで入力-出力までの時間が超短い現象って何?

174 : スポーツ選手(東京都) 投稿日:2010/08/05(木) 16:52:11.63 ID:f8uP2Gxh
>>173
量子の対生成

176 : 鵜飼い(catv?) 投稿日:2010/08/05(木) 16:53:58.29 ID:FgYkwGF6
>>173
放射性物質の崩壊を検知して乱数発生させるPCIのボードがあった。
今も売ってるかは知らない

178 : 画家(関西地方) 投稿日:2010/08/05(木) 16:55:37.71 ID:WrfdXv3a
>>174>>176
意味わからなさすぎワロタ

177 : 検察官(東京都) 投稿日:2010/08/05(木) 16:54:58.28 ID:esHQmvkq
xbox版カルトセプトもこれが原因で回収したんだっけ?

183 : 映画評論家(愛知県) 投稿日:2010/08/05(木) 17:07:38.38 ID:VJkOVYnz
ランダムとアトランダムの違いなんだよな。
受け手から見ればランダム(でたらめな)だけど、
作り手から見ればアトランダム(無作為に)な分けで。

コンピュータが無作為に処理できたら、とんでもないAIもってるのと同じ。

190 : 作詞家(アラバマ州) 投稿日:2010/08/05(木) 17:40:25.99 ID:SgCBVBVK
計測器用の統計処理ソフトで色々なチャート、管理図を表示させるのに
正規分布の乱数を作ってデモったら発注元が教えてくれって言ってきた。
今ならググれば一発だけど。

196 : 歯科医師(群馬県) 投稿日:2010/08/05(木) 17:56:48.62 ID:XrvKoPPG
コンピュータの乱数は偏ってるから云々とか言う人がよく居るけど、コンピューターや数学使ったりして解析すると偏りが
見えるってレベルで、人間がちょっと見たくらいでああ偏ってるねと分かるような物ではないんでしょ?

203 : 議員(青森県) 投稿日:2010/08/05(木) 18:06:30.80 ID:wb6t0wHi
>>196
現実の事象はもっと定期的で周期的で偏りがあることのほうが多い。
コンピュータの乱数は論理上の乱数を模索しているから、あまりにも
綺麗過ぎる乱数が出たりする。
また、結局演算によって生成するので周期性が出てきたりする。
だからただビットずらしたりすると途端に下手くそな乱数になったりもする。

197 : 路面標示施工技能士(東京都) 投稿日:2010/08/05(木) 17:58:51.91 ID:jqkhNA0w
そもそもこの世に偏ってない乱数って存在するの?
サイコロ振るにしても、サイコロの形や机の平たさ、投げる人のサイコロの持ち方や拾い方のくせで
いくらでも偏りが生じるだろうに

202 : 歯科医師(群馬県) 投稿日:2010/08/05(木) 18:06:10.14 ID:XrvKoPPG
>>197
円周率って乱数じゃあるめぇかと言われてるらしい。証明は出来ていないらしいけど

205 : 路面標示施工技能士(東京都) 投稿日:2010/08/05(木) 18:09:56.05 ID:jqkhNA0w
>>202
いやいや、円周率は何回計算しても同じ数字だから定数でしょ
仮に何桁目から何桁目まで切り取るにしても、その切り取り位置自体が乱数でなければ
同じく偏りが出ちゃう

208 : 鵜飼い(宮崎県) 投稿日:2010/08/05(木) 18:11:11.62 ID:2apRg2JL
>>205
無限にあるから、頭からつかっていけばいいじゃない。

212 : 歯科医師(群馬県) 投稿日:2010/08/05(木) 18:13:49.94 ID:XrvKoPPG
>>205
無限に桁があるとすれば、円周率の値が未知な桁は無限に提供されるじゃないか

222 : 鵜飼い(宮崎県) 投稿日:2010/08/05(木) 18:20:32.25 ID:2apRg2JL
>>212
よく分からないけど「無限にあるとすれば」って無限にあるんでしょ?

224 : 騎手(アラバマ州) 投稿日:2010/08/05(木) 18:22:42.17 ID:VEPvf+1O
>>222
何桁か忘れたけど割り切れたってニュースになってたのを見たことある気がするんだが

230 : 騎手(関西地方) 投稿日:2010/08/05(木) 18:23:46.75 ID:R1Bnnf48
>>224
それ虚構新聞だからwww
円周率は永遠に続く小数だと証明されている。

235 : 路面標示施工技能士(東京都) 投稿日:2010/08/05(木) 18:27:01.33 ID:jqkhNA0w
>>208,>>212
頭から使っていくと、誰かが「最初に3桁の乱数ほしいなー」って思ったときに314なのが確定してしまうし、相当偏るぞ

245 : 鵜飼い(宮崎県) 投稿日:2010/08/05(木) 18:39:22.48 ID:2apRg2JL
>>235
理論的な話で、実際に円周率を無限に使うとかできないんだから、
そこまで心配しなくていいよ。

246 : げつようび(東京都) 投稿日:2010/08/05(木) 18:42:12.09 ID:P+tjHftV
>>245
だったら乱数表と変わらなくないの?

200 : 鵜飼い(東京都) 投稿日:2010/08/05(木) 18:02:37.20 ID:rQBs844R
time_t t = time()でいいじゃねえか

207 : 鵜飼い(宮崎県) 投稿日:2010/08/05(木) 18:10:28.60 ID:2apRg2JL
時間を使えってカキコがいくつかあるけど、時間はシード値くらいにしか
使えないだろ。

209 : スクリプト荒らし(佐賀県) 投稿日:2010/08/05(木) 18:12:37.89 ID:rJw61NX0
マイクとかのノイズを乱数生成関数の係数にしてやればいいんじゃね

232 : げつようび(東京都) 投稿日:2010/08/05(木) 18:24:23.45 ID:P+tjHftV
>>209
もうあるよ
アナログのノイズ源から乱数を発生させるCPUが

233 : スクリプト荒らし(佐賀県) 投稿日:2010/08/05(木) 18:26:01.06 ID:rJw61NX0
>>232
そうだったのか
安心した

216 : 6歳小学一年生(東京都) 投稿日:2010/08/05(木) 18:15:49.29 ID:jjtXkzmi
レトロゲーの乱数なんて超適当だけどお前ら誰もおかしいとか思わなかったろ
つまり適当でいいんだよ

218 : 騎手(東京都) 投稿日:2010/08/05(木) 18:18:18.67 ID:QAPKjgiB
>>216
それっぽくなってればいいんだよな

むしろ一部のゲームは乱数使われるとクリアできない物も多かったろ
パターン利用してクリアとかさ

219 : 騎手(関西地方) 投稿日:2010/08/05(木) 18:19:55.17 ID:R1Bnnf48
そもそもなんでゲームの話になってるの。
乱数の精度が重要なのって物理シミュレーションとかじゃないの。

223 : 騎手(アラバマ州) 投稿日:2010/08/05(木) 18:22:22.35 ID:Jx4kD6AE
乱数の定義は「予測が出来ない」だから
円周率だと計算して予測できちゃうんだよな

239 : 歯科医師(群馬県) 投稿日:2010/08/05(木) 18:31:00.14 ID:XrvKoPPG
>>223
予測出来るの?
例えば円周率から取った乱数で、12345678と続いた部分があったとして、次の数字が何であるか予測できる?
これが例え1億桁であっても、無限に続く数列の中には特定の1億桁の連続も無限に出てくる訳だから、次の数字って何だか分からなくね

>>235
実用的な部分はおいといてさ、常に円周率の未知の桁を用いるとすれば

242 : 議員(青森県) 投稿日:2010/08/05(木) 18:35:13.83 ID:wb6t0wHi
>>239
円周率のn桁目を演算する式考えたことないだろ

227 : ワルサーWA2000(神奈川県) 投稿日:2010/08/05(木) 18:23:06.32 ID:LhTO2Wrz
昔ν速で誰か貼ってたヤツ
だけどやっぱ偏って見えるよな

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
        //0~range 内で乱数を求める
        int range = 100;

        int i,value;
        srand( time(NULL) );

        for (i = 0; i < 100; i++){
                value = (rand() / (RAND_MAX + 1.0)) * range;
                printf("%3d ", value );
        }
}


234 : 編集者(catv?) 投稿日:2010/08/05(木) 18:26:31.99 ID:n5pMgB5+
アホクライアントに"同じ値がでたから乱数になってない。"って文句言われたよ。
そりゃ1~9の整数を生成するんだから、たまには同じ値がでるわな。

それならそうとちゃんと最初から、前回と同じなら再計算って指示してくれ。
乱数で生成って指示しておいてそりゃねーだろ。


236 : げつようび(東京都) 投稿日:2010/08/05(木) 18:29:44.69 ID:P+tjHftV
>>234
同じ数が絶対出ないってかなり偏ってるよな

240 : 編集者(catv?) 投稿日:2010/08/05(木) 18:32:49.01 ID:n5pMgB5+
>>236
だよな。
反論するのもめんどくさいからクライアントのイメージする乱数にしておいたけど

244 : ダイバー(catv?) 投稿日:2010/08/05(木) 18:37:47.40 ID:c6cCJ2Xs
>>240
それ「乱数」の仕様をちゃんと確認した方がよくないか
「1からnまでの整数からランダムな順序に取り出してくれ 戻しはなし」という仕様かもよ

253 : MPS AA-12(福岡県) 投稿日:2010/08/05(木) 18:53:44.46 ID:LMfed+To
>>244
「シャッフル」という言葉は
プロのプログラマでもあまり使わないからなあ。
クライアントならなおさら、分かりやすい言葉を使ってくれるとは思わない方がいいよね。

255 : 鵜飼い(北海道) 投稿日:2010/08/05(木) 18:59:43.55 ID:EM3Ky9hO
>>253
トランプをシャッフルするのがまた意外とむつかしい

262 : 編集者(catv?) 投稿日:2010/08/05(木) 19:22:11.11 ID:n5pMgB5+
>>244
もうリリースされちゃってるから無理。
表示位置を変えたいだけだから、
本来の意味の乱数じゃなくても問題ない。


243 : 人間の恥(神奈川県) 投稿日:2010/08/05(木) 18:36:55.16 ID:h6U9E5Wm
株価とかいいんじゃないか
誰にも予測できないしな

248 : 通関士(滋賀県) 投稿日:2010/08/05(木) 18:48:20.75 ID:omWWQqoy
ランダム性って論理学が一番苦手そうなモノっぽいよね

250 : タルト(東京都) 投稿日:2010/08/05(木) 18:51:05.00 ID:vzFoj8Tl
乱数とかめんどくさいからGetTickCountで代用してたら
Timerと組み合わせたら同じ値しか出てこなくてワロタ

260 : バレエダンサー(北海道) 投稿日:2010/08/05(木) 19:18:30.56 ID:y5oNwepd
全くの素人の考えですが
1から60まで(必要なだけ)用意して
それの中で偏り(%)が必要なら60に収まる中で調整して
一秒(あるいはもっと小さな単位)毎に当たる数字が変わるようにすれば
サイコロのような事は簡単に出来るのかと思っていた
これは擬似乱数なんだろうけど

267 : 鵜飼い(神奈川県) 投稿日:2010/08/05(木) 20:27:35.08 ID:tbUXmkpc
乱数って不思議、無理数を含めた乱数はそもそもデジタルコンピューターでは不可能だし
では1から6の乱数となればあらゆる可能性
サイコロを振って6が一兆の一兆乗の一兆乗の一兆乗続く部分もどこかになければならないわけ
可能性としてゼロじゃないから

269 : 演歌歌手(東京都) 投稿日:2010/08/05(木) 21:31:05.21 ID:rbQkMvyI
円周率(連分数展開とか無理数とか超越数とかそのへんも)の任意の桁から数字取ってくるプログラムの中で
そもそも任意の桁が何桁目か選ぶのに乱数を使うから意味なくね

276 : ノブ姉(栃木県) 投稿日:2010/08/05(木) 21:47:39.87 ID:rvK+sG5j
ある一定の面積に降り注ぐ宇宙線の時間的間隔は完全なランダムだと聞いたことがあるぞ。
この間隔を数値化すれば完全な乱数ができる。

279 : タコス(大阪府) 投稿日:2010/08/05(木) 21:50:40.47 ID:Fofk3HcG
>>276
宇宙線を受信する装置はどうするんだよ。

280 : ノブ姉(栃木県) 投稿日:2010/08/05(木) 21:55:26.89 ID:rvK+sG5j
>>279
どっかの博物館でこどもの時に見たぞ。金属の板を重ねた形で、宇宙線がそこを通過するとスパークが起きるやつ。
ていうか、宇宙線ぐらい地表でいくらでも観測できるんだろ。

285 : エンジニア(不明なsoftbank) 投稿日:2010/08/05(木) 22:12:50.93 ID:oZ1hBVWc
>>279
光倍増管使うしかないな

294 : 船員(山梨県) 投稿日:2010/08/05(木) 22:46:14.57 ID:4WXy0VSO
unsigned long xor128(void)
{
    static unsigned long x=123456789,y=362436069,z=521288629,w=88675123;
    unsigned long t;
    t=(x^(x<<11));x=y;y=z;z=w; return( w=(w^(w>>19))^(t^(t>>8)) );
}


335 : 軍人(dion軍) 投稿日:2010/08/06(金) 11:16:59.79 ID:m0yylusu
>>294
static変数は勘弁してくれ

338 : 宇宙飛行士(宮崎県) 投稿日:2010/08/06(金) 11:51:03.49 ID:bU6SRbFn
>>335
staticにしないと毎回同じ値が返ってくるよ。

304 : 新聞配達(高知県) 投稿日:2010/08/05(木) 23:59:38.15 ID:FbXGjbJ4
パチンコの変な波は
これだったんですね。

305 : たこ焼き(大阪府) 投稿日:2010/08/06(金) 00:10:48.90 ID:DOSuVCoH
>>304
パチンコって警察チェックしてなかったけ?


312 : 美容師(岐阜県) 投稿日:2010/08/06(金) 00:51:16.64 ID:uG2PqJ7y
>>304-305
乱数を使うと博打そのものになってしまうので、パチンコは周期性や
規則性をわざと持たせてある。で、その周期性を見破る技術が勝敗を
決するゲームという建前になってる。
もちろん人間が狙って当てられないよう目まぐるしく動くので、実際は
十分乱数的な働きをしてるんだが。

だからたまに周期性を見破られて騒動になったり、時間を正確に
刻む体感器などが使われちゃったりするのな。

313 : 官僚(西日本) 投稿日:2010/08/06(金) 00:55:48.89 ID:Ga4D6Er+
>>312 嘘付くな

乱数を変えられるのでなく、
パチンコは釘と寝かせ
スロットは設定により当り・大当たり確率を変更出来る
だけだろ

乱数はあくまでM系列乱数だろ

319 : 技術者(アラバマ州) 投稿日:2010/08/06(金) 06:53:17.74 ID:3bvBe5CQ
>>312
博打の定義で偶然性云々ってのがあるらしいけど何か変だよな
だったら偶然性のない囲碁や将棋で金賭けて打つのは博打じゃないって事になってしまう

306 : zip乞食(神奈川県) 投稿日:2010/08/06(金) 00:14:54.45 ID:0V1WHR2R
ゲームで乱数調整する奴止めろ可哀想だろ

308 : 三菱電機社員(静岡県) 投稿日:2010/08/06(金) 00:19:48.84 ID:ZAmfTf3w
>>306
1/256で入手できるアイテムとか基地外仕様に対抗するには仕方ないだろ

309 : 芸能人(不明なsoftbank) 投稿日:2010/08/06(金) 00:19:54.93 ID:+FD1a7cz
でもプログラムで精度の良い乱数を使う機会って無いよ

357 : 通りすがり(関東) 投稿日:2010/08/06(金) 16:42:46.75 ID:xUgrAhcH
>>309
はっきり言って、スパコン使って経済とか核反応とかを
シミュレーションとかするんでもなければ、
今どきのrand()で十分だよな。


311 : 添乗員(岩手県) 投稿日:2010/08/06(金) 00:38:56.71 ID:D6aHecGe
もうすっかり忘れたけど、乱数の種の候補を幾つか取り出して実際に乱数
発生させて出力の分布を見て極端な偏りがないものを選ぶ、とか結構面倒
なことをやったことがあるな。

314 : コピーライター(千葉県) 投稿日:2010/08/06(金) 01:52:30.84 ID:w8P30YdY
仕組みがあって動いているものから完全な不規則は作れない
神はサイコロ遊びをしない

320 : 家畜人工授精師(アラバマ州) 投稿日:2010/08/06(金) 09:07:59.41 ID:bd42IxME
プログラムの場合、乱数の関数だけだと値が変化しないから、時間を組み合わせるわけだが、
それでも完全な乱数ではないらしい。

321 : 落語家(北海道) 投稿日:2010/08/06(金) 09:12:00.54 ID:OLgf0tt6
一般的に乱数が必要な場面って厳密な乱数じゃなくても事足りるんだよな

322 : 技術者(dion軍) 投稿日:2010/08/06(金) 09:15:01.99 ID:SoVsMWuz
20年以上前にビッグ錠がかいた天才ゲーマーの漫画でコンピューターの
乱数生成は癖があるから、そのパターンを読めれば絶対に勝てるとかいうのがあったな
当時の子供の目にも無理があると思ったけど

327 : オウム真理教信者(広島県) 投稿日:2010/08/06(金) 09:33:22.00 ID:I8ys5iFq
>>322
実際アーケードゲームで電源入れた直後に始めるとパターンが毎回一緒になるとかもあったらしいぞ。
テトリスなんかも周期を全て覚えて云々とかあったな。

332 : 声楽家(神奈川県) 投稿日:2010/08/06(金) 10:28:24.40 ID:saoP1xbW
>>327
RTAやTAなんかでは乱数調整は普通に利用されてるよね
SFCやPSだと大抵はBIOSから取ってきてるから
リセット→最速スタートで望みどおりの値手に入れたりね

323 : ハローワーク職員(東京都) 投稿日:2010/08/06(金) 09:20:48.52 ID:UU6U+Pnp
ゲームのRomは同じ乱数表使ってるから
読めるよ

詰めエムブレム とかで検索すりゃ出るかも

326 : 画家(静岡県) 投稿日:2010/08/06(金) 09:26:28.89 ID:uYwwBeLO
.NETの乱数System.Randomって勝手に時間要素かなんか使ってくれてんの?
プログラム立ち上げるたびに毎回、違った乱数発生してるんだけど


334 : 軍人(dion軍) 投稿日:2010/08/06(金) 10:53:09.64 ID:m0yylusu
>>326
時間に応じて決定される既定のシード値を使用し、Random クラスの新しいインスタンスを初期化します。
http://msdn.microsoft.com/ja-jp/library/system.random.random%28v=VS.80%29.aspx

シードなしの疑似乱数はたいてい内部的には時刻をシードに使ってる

328 : 翻訳家(岡山県) 投稿日:2010/08/06(金) 09:37:55.31 ID:AfMWVKs1
GBA版FF5で次元の狭間で中断セーブして
再開すると必ず二回目の戦闘でムーバーが出てたな
あれも乱数のバグかな?

329 : 技術者(東京都) 投稿日:2010/08/06(金) 09:39:35.24 ID:SWSH9u01
>>328
バグって言わないよw
仕様の練りが甘いというか

339 : 棋士(大阪府) 投稿日:2010/08/06(金) 11:56:01.00 ID:L3nNmLVA
円周率に出てくる数字は統計取ると平均化されてるの?

341 : 軍人(dion軍) 投稿日:2010/08/06(金) 12:14:58.82 ID:m0yylusu
>>339
これによると、疑似乱数として十分問題ないらしいよ
http://www.is.nagoya-u.ac.jp/thesis/M2005/cm/M350301018j.pdf

344 : 技術者(神奈川県) 投稿日:2010/08/06(金) 13:06:13.00 ID:eqeg+LiF
>>341
統計的検定の結果も見れないのに…

347 : 宇宙飛行士(アラバマ州) 投稿日:2010/08/06(金) 13:35:20.39 ID:cz7x4IHJ
>>339
クヌースが π^n mod 1 を[0,1)の一様分布として検定したら充分な品質だったってさ

345 : 技術者(東京都) 投稿日:2010/08/06(金) 13:15:54.66 ID:SWSH9u01
まあ気休めにこういうのやってみなよw
http://flashgo.wiki.fc2.com/wiki/DICEWARS

結構運要素満載でむかつくけどなw

348 : ネイルアーティスト(東京都) 投稿日:2010/08/06(金) 16:20:47.58 ID:og1BvWk9
証明されてないけど、真らしい命題だよね
超越数の数字は一様に分布しているか

354 : 風俗嬢(catv?) 投稿日:2010/08/06(金) 16:35:28.11 ID:jNlMjbV1
最近のCPUに入ってる乱数ジェネレータは半導体のノイズ使うだろ。
それ使えば疑似乱数的な不完全さはないんじゃないのか。

359 : トリマー(catv?) 投稿日:2010/08/06(金) 18:24:57.99 ID:eSwtAdeC
同じ数字が何度か連続して出るのも乱数としては普通の動作なんだけど
合同法で出した乱数だと同じ数字の連続ってないよね
っつーか同じ数字が連続したら死ぬまでその数字しか出ないか

289 : 和菓子製造技能士(鹿児島県) 投稿日:2010/08/05(木) 22:22:02.68 ID:9m9Nu2ot
サイコロ 1個49,875 円
http://www.tanomi.com/nipponstyle/html/item05008.html


裕福な家庭に生まれたν速民ならもちろん、
お正月には家族そろってこのサイコロで双六遊びしたよね。

関連記事
記事紹介
ブログパーツ探すなら「ブログパーツ助っ人」!
関連リンク