[過去ログ]
C言語なら俺に聞け 160 (1002レス)
C言語なら俺に聞け 160 http://mevius.5ch.net/test/read.cgi/tech/1672191630/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
121: デフォルトの名無しさん (オッペケ Sr6d-/dxN) [sage] 2023/01/19(木) 20:45:09.38 ID:LuniV29Gr 大した精度は必要ないだろうし簡単なやつ探せば? http://mevius.5ch.net/test/read.cgi/tech/1672191630/121
122: デフォルトの名無しさん (ワッチョイ 9510-f6s+) [sage] 2023/01/20(金) 13:52:09.56 ID:KaoK9Arp0 8bit時代にBASICのRND関数をアセンブラから呼び出す方法知らなくて、 ROM上のバイナリーデータから乱数作るルーチン組んだの思い出した。 (ROMから2バイトxn個のデータとって前回出力した値に足したりXORしたりと) 16bit DOS環境になっても似たようなの作ったなぁ(ROMの代わりに乱数表?作った)。 http://mevius.5ch.net/test/read.cgi/tech/1672191630/122
123: デフォルトの名無しさん (ワッチョイ cd91-rGbT) [sage] 2023/01/20(金) 13:55:55.25 ID:PBwN2qBR0 ROMから取り出しだと値が偏ったりしないかな? http://mevius.5ch.net/test/read.cgi/tech/1672191630/123
124: デフォルトの名無しさん (ワッチョイ 86cf-7DGa) [sage] 2023/01/20(金) 16:51:45.29 ID:pV6+JPqV0 やったことないけど>>122見る限りりそんなに偏らないんじゃないかな 基本的にやりくちとしては暗号分野の鍵導出処理と似たようなことをしてるんだから http://mevius.5ch.net/test/read.cgi/tech/1672191630/124
125: デフォルトの名無しさん (スッップ Sdea-2YtF) [sage] 2023/01/20(金) 18:40:05.00 ID:R9yntGVvd 暗号の乱数とゲームで使うような乱数は違うだろ http://mevius.5ch.net/test/read.cgi/tech/1672191630/125
126: デフォルトの名無しさん (ワッチョイ ed01-hn8B) [sage] 2023/01/20(金) 18:58:44.32 ID:coXRsv3s0 値の範囲を調整するのに mod とると周期性が現れたり偏ったりするねんな http://mevius.5ch.net/test/read.cgi/tech/1672191630/126
127: デフォルトの名無しさん (ワッチョイ 2a47-w88e) [sage] 2023/01/20(金) 19:06:38.00 ID:vRsHomcy0 >>122 リフレッシュカウンタから乱数を作るのがお約束ですよ、8 bit の時代はね http://mevius.5ch.net/test/read.cgi/tech/1672191630/127
128: デフォルトの名無しさん (スッップ Sdea-2YtF) [sage] 2023/01/20(金) 19:28:35.95 ID:R9yntGVvd >>127 そういうCPUやBASICROMに依存する方法は最新機種では動作が変わったり予測できないので商業レベルではやらなかった かわりに線形合同などのアルゴリズムを使った アーケードのプレイデモではジョイスティックとボタンの記録だけ取って再生してメモリを節約してたので 毎回同じ乱数パターン(敵の移動や弾発射)が獲得できないと困るので http://mevius.5ch.net/test/read.cgi/tech/1672191630/128
129: デフォルトの名無しさん (テテンテンテン MMde-tpib) [sage] 2023/01/20(金) 20:01:16.13 ID:EscqwfOXM >>126 とはいえ、0~10までの乱数取得するのに%使わずにどうしろと… 質の良い疑似乱数使えば問題無い http://mevius.5ch.net/test/read.cgi/tech/1672191630/129
130: デフォルトの名無しさん (スッップ Sdea-2YtF) [sage] 2023/01/20(金) 20:28:16.76 ID:R9yntGVvd 疑似乱数にはたいてい周期性が現れるもの とくに下の桁に現れやすいので 上の桁を取ればいい(modではなく目的の桁/乱数の最大桁をかける) http://mevius.5ch.net/test/read.cgi/tech/1672191630/130
131: デフォルトの名無しさん (ワッチョイ 6a36-f6s+) [sage] 2023/01/20(金) 20:45:14.37 ID:A1RdTars0 >127 再現性のある乱数が欲しいって場合も微レ存。 http://mevius.5ch.net/test/read.cgi/tech/1672191630/131
132: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a3e-w88e) [sage] 2023/01/20(金) 21:21:15.74 ID:FDJF8fJ70 >>129 乱数源自体は良質なものだという前提で、 0~10 が欲しいときに単に %11 にすると小さい値のほうが少し出現率が高くなる。 たとえば乱数源がバイト単位だとすると、 255 以下で最大の 11 の倍数 (253) を超えた分 (254~255) が出現率を偏らせる原因。 だからそのような値が出たときに捨てて次の値を使用することにした上で %11 すればいい。 C++ の std::uniform_int_distribution などはだいたいそういう実装になってる。 http://mevius.5ch.net/test/read.cgi/tech/1672191630/132
133: デフォルトの名無しさん (ワッチョイ 6a36-f6s+) [sage] 2023/01/20(金) 21:27:39.82 ID:A1RdTars0 アセンブラで MOV AL,8bit 乱数 MOV BL,欲しい整数乱数最大値+1 MUL BL ;AHに0からBL-1までの乱数が入る ってなことやってたような気がする。 計算上最大値の出現率が低いみたい。 16bitに拡張すれば多少改善。 http://mevius.5ch.net/test/read.cgi/tech/1672191630/133
134: デフォルトの名無しさん (ワッチョイ 2a47-w88e) [sage] 2023/01/20(金) 22:44:15.60 ID:vRsHomcy0 >>128 そうですかね… 案外 LD A, R とかやってた気がするなあ…気がするだけですけどね http://mevius.5ch.net/test/read.cgi/tech/1672191630/134
135: デフォルトの名無しさん (ワッチョイ 2a47-w88e) [sage] 2023/01/20(金) 22:45:17.95 ID:vRsHomcy0 >>131 8 bit の時代に、ですか? 結構念入りなアセンブラプログラムですねえ、めんどくさくって死にそう http://mevius.5ch.net/test/read.cgi/tech/1672191630/135
136: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a3e-w88e) [sage] 2023/01/20(金) 23:11:55.26 ID:FDJF8fJ70 ファミコン、スーパーファミコン時代の有名ソフトの乱数生成の仕組みが今ではかなり明らかになってるが、 ドラクエとかファイナルファンタジーとかでも思ったより場当たり的な雑な仕組みで驚く。 こういう用途だと多少の性質の悪さもそれはそれで味になるということもあるんだろう。 シミュレーションとか暗号とかに関わるものだと理論的な裏付けがないと恐ろしいが…… http://mevius.5ch.net/test/read.cgi/tech/1672191630/136
137: デフォルトの名無しさん (テテンテンテン MM7f-TAsf) [sage] 2023/01/21(土) 00:33:34.31 ID:EJn7glvGM >>130 いや、だから長周期な乱数が有るんだよ 間違いなくオマエが生きてる内に一週しないよ 下位バイトだって当然だ 周期してると思ったら死ぬまで見てれば周期してないのが分かるよ http://mevius.5ch.net/test/read.cgi/tech/1672191630/137
138: デフォルトの名無しさん (テテンテンテン MM7f-TAsf) [sage] 2023/01/21(土) 00:40:48.68 ID:EJn7glvGM 1 2 2 と出て、2が偏ってと言う奴はいない あまりにも範囲が小さいと、偏ってるかとか周期が有るかは長く見ないと分からん http://mevius.5ch.net/test/read.cgi/tech/1672191630/138
139: デフォルトの名無しさん (ワッチョイ 6fda-A+LD) [sage] 2023/01/21(土) 00:51:58.56 ID:9x5I4Xif0 メルセンヌツイスタ https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF http://mevius.5ch.net/test/read.cgi/tech/1672191630/139
140: デフォルトの名無しさん (ワッチョイ cfcf-Jpma) [sage] 2023/01/21(土) 00:55:32.36 ID:iEE3pXT90 >>137 周期の話じゃないよ 乱数発生器の下位ビットはランダムじゃないことがあるって話だよ 全部同じ値だったりrand()%2で0と1が交互に順番に出てくるだけだったりするから上位ビット使おうってこと 自前で乱数を作る際にmodを使わないなんてのはC言語のFAQレベルの常識の話だからちょっとネットでもあさって勉強すればすぐ身につくよ それ以前に良い発生器を使えばいいっていうのはその通りだね http://mevius.5ch.net/test/read.cgi/tech/1672191630/140
141: デフォルトの名無しさん (テテンテンテン MM7f-TAsf) [sage] 2023/01/21(土) 01:15:16.87 ID:EJn7glvGM >>140 オマエが無知なの分かったよ 下位ビットが規則的になるってのは何も考えてない線形合同法だけの性質だ msvcrtのrandは線形合同法で求めた32bitの内上位16bitを下位にシフトしてるから、そういう性質はない 他の長周期な乱数はなにもしなくても当然そんな性質はない http://mevius.5ch.net/test/read.cgi/tech/1672191630/141
142: デフォルトの名無しさん (テテンテンテン MM7f-TAsf) [sage] 2023/01/21(土) 01:36:04.58 ID:EJn7glvGM ちなみにLinux(glibc)で% 10で試しても、偶数と奇数が交互に続くと言うことはなかった カルドセプトで話題になった乱数のバグは、自前で線形合同法を実装したから起きた問題だ 普通にSDKの乱数を使ってたら起きなかっただろう http://mevius.5ch.net/test/read.cgi/tech/1672191630/142
143: デフォルトの名無しさん (ワッチョイ 7f36-88l+) [sage] 2023/01/21(土) 02:05:39.28 ID:sslkm/QP0 >135 8/16bit時代のティルナノーグってゲームがシナリオコードっての使ってマップやシナリオを自動生成するらしく、 まぁ多分シナリオコードを再現性のある乱数のキーにしてるんだろうと。 http://mevius.5ch.net/test/read.cgi/tech/1672191630/143
144: デフォルトの名無しさん (スッップ Sd1f-iFXH) [sage] 2023/01/21(土) 05:00:16.98 ID:Q9FQ3lI1d >>141 結局下位のほうに周期性が現れやすいというのは肯定してるなw ライブラリのを仕組みもわからずそのまま使うと問題が起きた時に危険なので自前で作ったほうが楽なこともあるんだよ 移植の問題もあるから http://mevius.5ch.net/test/read.cgi/tech/1672191630/144
145: デフォルトの名無しさん (ワッチョイ 6301-CtYK) [sage] 2023/01/21(土) 11:13:45.88 ID:TvLSyCnz0 理想的な一様乱数であっても 頻度が一様から少し崩れる件については >>132 でクリアになってる前提で 次に周期等の乱数の素性をああだこうだやってるのでいいんだよね? http://mevius.5ch.net/test/read.cgi/tech/1672191630/145
146: デフォルトの名無しさん (テテンテンテン MM7f-TAsf) [sage] 2023/01/21(土) 12:57:12.01 ID:EJn7glvGM >>144 線形合同法そのままの下位ビットはランダム性が低いから上位16bitを使うという実装がされてる これは%で下位ビット使っても何も問題無い 他の乱数(例えばメルセンヌツイスターとか)とかも下位ビット使っても何も問題無い オマエは何が言いたいんだ? 乱数イコール素の線形合同法と決めつけてんのか? http://mevius.5ch.net/test/read.cgi/tech/1672191630/146
147: デフォルトの名無しさん (ワッチョイ 7f47-j5s0) [sage] 2023/01/21(土) 22:32:06.91 ID:PxhUXXTz0 それより MT を利用したストリーム暗号の実装を探しているんですが、誰か良さげなのを書いていませんかね? http://mevius.5ch.net/test/read.cgi/tech/1672191630/147
148: デフォルトの名無しさん (ラクッペペ MM7f-qqxO) [sage] 2023/01/21(土) 23:01:28.77 ID:5FfejZmpM 暗号の実装なら乱数源よりハッシュ関数の設計の方が重要だと思うけど http://mevius.5ch.net/test/read.cgi/tech/1672191630/148
149: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-j5s0) [sage] 2023/01/21(土) 23:09:55.12 ID:AnImjWZM0 メルセンヌツイスタは予測はしやすいので暗号に向かないって話じゃなかったっけ? 理論に詳しいわけじゃないけどストリーム暗号だと生成した乱数を ほとんど順序通り使うことになるので素直に使うと弱い暗号になってまう。 それをカバーする案がどこかで出ているとかいう話なのかな? http://mevius.5ch.net/test/read.cgi/tech/1672191630/149
150: デフォルトの名無しさん (ワッチョイ 7f47-j5s0) [sage] 2023/01/21(土) 23:25:57.01 ID:PxhUXXTz0 >>148-149 生成したMT乱数をハッシュに通して xor マスクに使えば今すぐにでも実装できまますが、馬鹿みたいにコストが高い もっとお気楽に「暗号論的に安全な」マスクを生成する方法があるはず、と踏んでいます >>149 生成された暗号列から、暗号生成系内の状態を推測する手段が *****「ありうる」***** というだけで、実際に MT において予測しやすいかどうかは、また別の問題かと http://mevius.5ch.net/test/read.cgi/tech/1672191630/150
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 852 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.017s