C言語なら俺に聞け 160

■ このスレッドは過去ログ倉庫に格納されています
2022/12/28(水) 10:40:30.02ID:PyoNDBFu0
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 159
https://mevius.5ch.net/test/read.cgi/tech/1659623547/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/01/17(火) 16:23:52.80ID:A2sb5i63d
ハードやらんやつにはわからんよな
66デフォルトの名無しさん (アウアウウー Sa91-HawO)
垢版 |
2023/01/17(火) 20:13:41.53ID:reGY8TLTa
弄られたくなきゃ言葉の定義くらい考えてからレスしな?w
2023/01/17(火) 20:18:34.57ID:qA7lxKdi0
無知晒して何も言い返せないバカは他人のことよりまず自分の心配をしな
2023/01/17(火) 20:22:19.75ID:qA7lxKdi0
ここをどこだと思っている
プログラム技術ねえやつは底辺の二番底だ
2023/01/17(火) 20:23:55.07ID:NbLfYJo10
変に反応し続ける割にはGoogleに責任を押し付けるばかりでここまで情報量ゼロだもんな
温度源みたいな謎ワードと同類ではないということを示すロジックがあるなら示して頂こうか
2023/01/17(火) 20:31:29.99ID:qA7lxKdi0
本当の乱数とエントロピーで何の話かわからなかった白痴に情報なんかいらねえだろ
豚に真珠ってやつだ
2023/01/17(火) 20:41:17.67ID:NbLfYJo10
このように反応する割にはなんの弁明もなくレッテル張るだけなんです。
これをまさしく「悪あがき」というのでしょう。
2023/01/17(火) 20:42:50.74ID:qA7lxKdi0
乱数とエントロピーの関係がわからんやつを
プログラム技術板でバカと言うことの何が悪あがきなんだか

バカで済んでることに感謝しろや
2023/01/17(火) 20:48:05.96ID:NbLfYJo10
誤解のフリをして突かれている部分を誤魔化していますがそのような安易な策が通じると思っているのでしょうかね
ま、思っているからこそ実践しているのでしょう。
2023/01/17(火) 20:51:55.91ID:qA7lxKdi0
エントロピーを物理の話と誤解したバカが何を誤魔化したいの?
自らの精神分析を俺に聞かされても困るんだが
2023/01/17(火) 21:00:12.90ID:NbLfYJo10
いえいえ、そのようなことはございませんよ
どの辺でそのように判断されたのか是非お聞かせください。
もちもん、特になければ今まで通り一方通行でお話しを続けられても構いません
2023/01/17(火) 21:05:58.17ID:qA7lxKdi0
まあ匿名掲示板だからね
シラを切れば全てをリセットできる

今までの引っ込み付かなくなったあんたがいなくなって
マトモな別人になってくれるならこっちもありがたい
2023/01/17(火) 21:23:04.17ID:KfRCDoQT0
まあ熱雑音も実際には色つきであって
全てのバンドを網羅する白色ではないわけだが
目的用途によってはそれでも十分に乱れてる扱い出来ると
2023/01/17(火) 21:30:32.61ID:NbLfYJo10
このように度々挙がっております指摘についての弁明を避け続ける一方で根拠に乏しい我々側の非についてはひたすら高々と掲げる様子を平仮名5文字でたしか何と言うのでしたっけ。。。
2023/01/17(火) 21:40:03.07ID:qA7lxKdi0
熱雑音をどうやってプログラムに使うか知らんやつのお花畑妄想w
80デフォルトの名無しさん (アウアウウー Sa91-HawO)
垢版 |
2023/01/17(火) 21:40:34.37ID:4lzoCN/Pa
>シラを切れば全てをリセットできる

なるほど
まさにそれを自身で実践していると言うわけだ
表明助かる
2023/01/17(火) 21:41:41.53ID:qA7lxKdi0
クオークの色とかと勘違いしてそうだなw
82デフォルトの名無しさん (アウアウウー Sa91-HawO)
垢版 |
2023/01/17(火) 21:44:32.57ID:4lzoCN/Pa
突然クオークとか言い出すあたりもう末期でしょ
もっとちゃんとシラを切り通さないと
2023/01/17(火) 21:49:41.96ID:qA7lxKdi0
熱雑音と言い出したどの口で言うのか
まだ乱数とエントロピーの違いがわからんやつが
乱数とクオークの違いなんかわかるわけねえだろバーカw
2023/01/17(火) 21:51:17.07ID:qA7lxKdi0
で、まだやんの?
豚に真珠つーたろ
おまえにくれてやるのは罵声だけだぞ

大義名分のある罵声だ
プログラム技術板から出て行け
85デフォルトの名無しさん (アウアウウー Sa91-HawO)
垢版 |
2023/01/17(火) 21:55:32.49ID:DPhLiFAha
「熱雑音」でスレ内検索したら>>64が出てきた
おい、おまえなんか言われてんぞ
2023/01/17(火) 22:02:12.15ID:NbLfYJo10
この乱文ぷりを見るに例のレスも同じように何も考えずに書かれたのでしょうねぇ
そしてその雑さ原因の指摘に腹を立てて喚き散らかすと
もはや救いようがありません。
2023/01/17(火) 22:23:55.68ID:qA7lxKdi0
プログラム技術板の汚点め
88デフォルトの名無しさん (アウアウウー Sa91-HawO)
垢版 |
2023/01/17(火) 22:27:26.96ID:F7Tmfdoea
エントロピー源があるならエントロピーシンクもあるのかね
2023/01/17(火) 22:29:34.40ID:HUr0VOMtr
この手の論争は暴言吐いたやつほど負けに近づくわな
自分の意見を補強できないからその手段に行き着くわけで
2023/01/17(火) 22:38:18.91ID:qA7lxKdi0
無知すぎるやつが自分た人様にバカと言えるかどうかの自信さえない構図
場違いとわかっってんならさっさと失せろ
2023/01/17(火) 22:40:55.49ID:qA7lxKdi0
情報乞食としての収穫も絶望的なのに
いつまで縋りついてんだよキモすぎ産廃が
2023/01/17(火) 22:42:21.14ID:qA7lxKdi0
>>69
情報量ゼロだもんな
情報量ゼロだもんな
情報量ゼロだもんな
93デフォルトの名無しさん (アウアウウー Sa91-HawO)
垢版 |
2023/01/17(火) 23:11:09.87ID:vHSNNv2Oa
壊れたレイディオ
2023/01/17(火) 23:31:07.10ID:NbLfYJo10
結局情報量ゼロのまま終わってしまいました。
2023/01/18(水) 00:55:14.82ID:tqUHEoCQ0
このスレのエントロピーも増大しています><
2023/01/18(水) 00:59:14.46ID:lSAVVSLnM
本当の乱数なんて要らん
要は直近の乱数が予測困難であれば良いわけで、周期が長ければ予測が困難だ
使い方が間違ってて短周期になってしまうというセキュリティホールは見たことがある
2023/01/18(水) 07:11:22.38ID:fdV9KSWzd
某アンチウイルスソフトが乱数エンジンのシードにtime()を使ってて
ブルートフォース攻撃に脆いのを指摘されてたね
2023/01/18(水) 08:29:54.30ID:eLBB0cr+M
>>95
熱力学と違って情報理論では1を超えることは無い
2023/01/18(水) 08:31:57.59ID:eLBB0cr+M
すまん
情報量が超えることは無いがエントロピーならあり得るわ
2023/01/18(水) 10:46:50.42ID:cd+i1czb0
USBで挿せる便利なサイコロあるぞ
2023/01/18(水) 17:07:41.15ID:A9TOq90hd
const修飾子とポインタの関係がややこしい
2023/01/18(水) 18:41:44.13ID:bRSYEzcmd
なーんだ待ってたのにまだ出来ないのー? >>15
あくしろよ

正規分布からランダムにサンプリングするだけでしょ?
再帰的と書いたのはコード量を抑えたい、と言う理由なのよー
ボックスミューラーは使わないよね
2023/01/18(水) 18:50:52.54ID:pc+7EyEW0
共用体を使ってるコードを見たことないんだけど具体的に何に使えてどう使うの?
2023/01/18(水) 18:52:25.38ID:tqUHEoCQ0
const char *f() {f(); return "再起的に性器分布から確率密度値を...してね";}
2023/01/18(水) 18:59:51.47ID:aaaF5ns00
>>103
古くはMS-DOSシステムコールを呼び出すときに利用
あとは、XEventが有名
2023/01/18(水) 19:41:20.50ID:cd+i1czb0
逆に真の乱数をサンプリングし、大数の法則を期待して正規分布を得てみたい
とふと思いました
2023/01/18(水) 20:07:07.68ID:5annSIeD0
共用体はビットレベルでフォーマットが決まってる時に使う
2023/01/18(水) 20:07:28.64ID:5annSIeD0
通信やバイナリファイルなど
2023/01/18(水) 21:01:43.52ID:6nsqd3vSd
共用体で定義すればキャストを使った汚いコードを書かなくて済む
しかし共用体も今日ではあまりエレガントとも言えないのでは
2023/01/18(水) 21:24:32.21ID:ZQLfTfm70
人間が入力するときに
コントロールコードとかも拾いたい時があるからなあ
文字列だけではうまくいかない
2023/01/18(水) 21:41:20.89ID:4Z5GD2tK0
>>107-108
エンディアン独立ですか?
2023/01/18(水) 21:50:27.28ID:aaaF5ns00
良い質問だ、自分で調べると勉強になる
2023/01/18(水) 22:02:01.63ID:XcLAtUHa0
ソケットのINETADDRで
2023/01/18(水) 22:16:14.48ID:fAl7sUlA0
組込み用途ではSFRのアドレス番地に割り当てた変数に対して
char型と8bitのビットフィールド構造体の共用体
short型とchar型2要素の配列と16bitのビットフィールド構造体の共用体
などがよく使われる
2023/01/18(水) 23:16:00.76ID:5annSIeD0
自分のところのプロジェクトでは構造体でキャストする式にマクロで名前をつけてるな
2023/01/19(木) 00:26:10.20ID:SdwPSqPz0
昔のcobolのコードが生きていて
メモリを節約するために領域を再利用している
可能性はあるな
書き直した方がましだが
2023/01/19(木) 08:31:08.40ID:m5q+i06r0
>正規分布からランダムにサンプリングするだけでしょ?

>ボックスミューラーは使わないよね

なんかおかしくない?
前者は正規分布関数の値をランダムに抽出する 値域は 0 ~0.3989
後者は分布が正規分布となる乱数 値域は -∞ ~ ∞ (実用的には -4 ~ 4)
2023/01/19(木) 08:56:49.28ID:ePSJbuliM
標準正規分布の確率密度関数の値なら>>22の数式に確率変数の値を与えれば得られる
何の意味があるのかは知らん
もし積分値を得たいならランダムではなくて累積でないと意味ないぞ
2023/01/19(木) 15:11:00.82ID:TnS/SbOWd
違う、、、そうじゃ無い、、、
2023/01/19(木) 15:12:40.77ID:TnS/SbOWd
>>118
話題のdiffusion model のコードを書いてるの
2023/01/19(木) 20:45:09.38ID:LuniV29Gr
大した精度は必要ないだろうし簡単なやつ探せば?
2023/01/20(金) 13:52:09.56ID:KaoK9Arp0
8bit時代にBASICのRND関数をアセンブラから呼び出す方法知らなくて、
ROM上のバイナリーデータから乱数作るルーチン組んだの思い出した。
(ROMから2バイトxn個のデータとって前回出力した値に足したりXORしたりと)

16bit DOS環境になっても似たようなの作ったなぁ(ROMの代わりに乱数表?作った)。
2023/01/20(金) 13:55:55.25ID:PBwN2qBR0
ROMから取り出しだと値が偏ったりしないかな?
2023/01/20(金) 16:51:45.29ID:pV6+JPqV0
やったことないけど>>122見る限りりそんなに偏らないんじゃないかな
基本的にやりくちとしては暗号分野の鍵導出処理と似たようなことをしてるんだから
2023/01/20(金) 18:40:05.00ID:R9yntGVvd
暗号の乱数とゲームで使うような乱数は違うだろ
2023/01/20(金) 18:58:44.32ID:coXRsv3s0
値の範囲を調整するのに mod とると周期性が現れたり偏ったりするねんな
2023/01/20(金) 19:06:38.00ID:vRsHomcy0
>>122
リフレッシュカウンタから乱数を作るのがお約束ですよ、8 bit の時代はね
2023/01/20(金) 19:28:35.95ID:R9yntGVvd
>>127
そういうCPUやBASICROMに依存する方法は最新機種では動作が変わったり予測できないので商業レベルではやらなかった
かわりに線形合同などのアルゴリズムを使った
アーケードのプレイデモではジョイスティックとボタンの記録だけ取って再生してメモリを節約してたので
毎回同じ乱数パターン(敵の移動や弾発射)が獲得できないと困るので
2023/01/20(金) 20:01:16.13ID:EscqwfOXM
>>126
とはいえ、0~10までの乱数取得するのに%使わずにどうしろと…
質の良い疑似乱数使えば問題無い
2023/01/20(金) 20:28:16.76ID:R9yntGVvd
疑似乱数にはたいてい周期性が現れるもの
とくに下の桁に現れやすいので
上の桁を取ればいい(modではなく目的の桁/乱数の最大桁をかける)
2023/01/20(金) 20:45:14.37ID:A1RdTars0
>127
再現性のある乱数が欲しいって場合も微レ存。
2023/01/20(金) 21:21:15.74ID:FDJF8fJ70
>>129
乱数源自体は良質なものだという前提で、
0~10 が欲しいときに単に %11 にすると小さい値のほうが少し出現率が高くなる。
たとえば乱数源がバイト単位だとすると、
255 以下で最大の 11 の倍数 (253) を超えた分 (254~255) が出現率を偏らせる原因。

だからそのような値が出たときに捨てて次の値を使用することにした上で %11 すればいい。
C++ の std::uniform_int_distribution などはだいたいそういう実装になってる。
2023/01/20(金) 21:27:39.82ID:A1RdTars0
アセンブラで

MOV AL,8bit 乱数
MOV BL,欲しい整数乱数最大値+1
MUL BL
;AHに0からBL-1までの乱数が入る

ってなことやってたような気がする。
計算上最大値の出現率が低いみたい。
16bitに拡張すれば多少改善。
2023/01/20(金) 22:44:15.60ID:vRsHomcy0
>>128
そうですかね…
案外 LD A, R とかやってた気がするなあ…気がするだけですけどね
2023/01/20(金) 22:45:17.95ID:vRsHomcy0
>>131
8 bit の時代に、ですか?
結構念入りなアセンブラプログラムですねえ、めんどくさくって死にそう
2023/01/20(金) 23:11:55.26ID:FDJF8fJ70
ファミコン、スーパーファミコン時代の有名ソフトの乱数生成の仕組みが今ではかなり明らかになってるが、
ドラクエとかファイナルファンタジーとかでも思ったより場当たり的な雑な仕組みで驚く。
こういう用途だと多少の性質の悪さもそれはそれで味になるということもあるんだろう。

シミュレーションとか暗号とかに関わるものだと理論的な裏付けがないと恐ろしいが……
2023/01/21(土) 00:33:34.31ID:EJn7glvGM
>>130
いや、だから長周期な乱数が有るんだよ
間違いなくオマエが生きてる内に一週しないよ
下位バイトだって当然だ
周期してると思ったら死ぬまで見てれば周期してないのが分かるよ
2023/01/21(土) 00:40:48.68ID:EJn7glvGM
1 2 2 と出て、2が偏ってと言う奴はいない
あまりにも範囲が小さいと、偏ってるかとか周期が有るかは長く見ないと分からん
2023/01/21(土) 00:51:58.56ID: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
2023/01/21(土) 00:55:32.36ID:iEE3pXT90
>>137
周期の話じゃないよ 乱数発生器の下位ビットはランダムじゃないことがあるって話だよ
全部同じ値だったりrand()%2で0と1が交互に順番に出てくるだけだったりするから上位ビット使おうってこと
自前で乱数を作る際にmodを使わないなんてのはC言語のFAQレベルの常識の話だからちょっとネットでもあさって勉強すればすぐ身につくよ
それ以前に良い発生器を使えばいいっていうのはその通りだね
2023/01/21(土) 01:15:16.87ID:EJn7glvGM
>>140
オマエが無知なの分かったよ
下位ビットが規則的になるってのは何も考えてない線形合同法だけの性質だ
msvcrtのrandは線形合同法で求めた32bitの内上位16bitを下位にシフトしてるから、そういう性質はない
他の長周期な乱数はなにもしなくても当然そんな性質はない
2023/01/21(土) 01:36:04.58ID:EJn7glvGM
ちなみにLinux(glibc)で% 10で試しても、偶数と奇数が交互に続くと言うことはなかった
カルドセプトで話題になった乱数のバグは、自前で線形合同法を実装したから起きた問題だ
普通にSDKの乱数を使ってたら起きなかっただろう
2023/01/21(土) 02:05:39.28ID:sslkm/QP0
>135
8/16bit時代のティルナノーグってゲームがシナリオコードっての使ってマップやシナリオを自動生成するらしく、
まぁ多分シナリオコードを再現性のある乱数のキーにしてるんだろうと。
2023/01/21(土) 05:00:16.98ID:Q9FQ3lI1d
>>141
結局下位のほうに周期性が現れやすいというのは肯定してるなw
ライブラリのを仕組みもわからずそのまま使うと問題が起きた時に危険なので自前で作ったほうが楽なこともあるんだよ
移植の問題もあるから
2023/01/21(土) 11:13:45.88ID:TvLSyCnz0
理想的な一様乱数であっても
頻度が一様から少し崩れる件については
>>132 でクリアになってる前提で
次に周期等の乱数の素性をああだこうだやってるのでいいんだよね?
2023/01/21(土) 12:57:12.01ID:EJn7glvGM
>>144
線形合同法そのままの下位ビットはランダム性が低いから上位16bitを使うという実装がされてる
これは%で下位ビット使っても何も問題無い
他の乱数(例えばメルセンヌツイスターとか)とかも下位ビット使っても何も問題無い
オマエは何が言いたいんだ?
乱数イコール素の線形合同法と決めつけてんのか?
2023/01/21(土) 22:32:06.91ID:PxhUXXTz0
それより MT を利用したストリーム暗号の実装を探しているんですが、誰か良さげなのを書いていませんかね?
2023/01/21(土) 23:01:28.77ID:5FfejZmpM
暗号の実装なら乱数源よりハッシュ関数の設計の方が重要だと思うけど
2023/01/21(土) 23:09:55.12ID:AnImjWZM0
メルセンヌツイスタは予測はしやすいので暗号に向かないって話じゃなかったっけ?
理論に詳しいわけじゃないけどストリーム暗号だと生成した乱数を
ほとんど順序通り使うことになるので素直に使うと弱い暗号になってまう。
それをカバーする案がどこかで出ているとかいう話なのかな?
2023/01/21(土) 23:25:57.01ID:PxhUXXTz0
>>148-149
生成したMT乱数をハッシュに通して xor マスクに使えば今すぐにでも実装できまますが、馬鹿みたいにコストが高い
もっとお気楽に「暗号論的に安全な」マスクを生成する方法があるはず、と踏んでいます

>>149
生成された暗号列から、暗号生成系内の状態を推測する手段が
*****「ありうる」*****
というだけで、実際に MT において予測しやすいかどうかは、また別の問題かと
2023/01/22(日) 06:45:18.91ID:5LyKSzcv0
メルセンヌツイスタは暗号論的乱数ではないからな
標準の範疇ではrandom_deviceと併用することで暗号論的乱数を作れる

# 俺はrandom_deviceにハメられたことがあって不信感持ってる
2023/01/22(日) 06:57:44.96ID:GyU+xFDzM
ほぼ2の20000乗の長周期の乱数列の出現パターンに対して実用的な有限時間内に値の予測とかできるものなのか?
2023/01/22(日) 09:17:28.62ID:m0kendFMd
初期値を毎回同じにするとかマヌケな実装してなければ大丈夫だが
そういうの意外と多いからな
2023/01/22(日) 11:31:30.58ID:ZNfmIfkb0
>>152
ざっと調べてみた感じだと素朴なメルセンヌツイスタだと 624 個の連続する乱数列があれば内部状態を計算可能ということみたいだね。
2023/01/22(日) 11:55:01.35ID:2NQ69pgqM
擬似乱数は内部状態から数列を計算して外部出力しているのであって、出力された数列の結果だけから内部状態を計算して次回出力を予測するのは難しい
623もの内部変数をすべて確定させようとすれば途方も無いことになると思うけど
2023/01/22(日) 13:27:42.71ID:slZVcCWf0
量子コンピュータならあっという間かもしれん
2023/01/22(日) 14:53:35.01ID:5LyKSzcv0
もしかしてハッシュを復号できると思っている人がいるの?
2023/01/22(日) 17:32:55.31ID:KzI8pxO80
現実で乱数で問題になるのは中周期
短周期は誰が見ててもすぐに欠点がわかる
中周期は人間が見てわかりづらいけど
へたをすると推測されうる

本当に重要な場面では線形合同法は使わないね
2023/01/22(日) 18:43:18.71ID:5nd4WcY/0
>>157
ハッシュを復号?
何意味不明なことを言ってるんだよw
2023/01/22(日) 18:52:07.93ID:Gv0g55llH
15は大した乱数を求めてないだろうし線形合同法で大丈夫でしょ
2023/01/22(日) 19:51:00.57ID:r87X7TULM
少なくともゲーム用途ではもう決定版とも言えるのがPCGだ
これは線形合同法を加工したものだ
大体の用途にはこれだけ知ってれば十分だろ
2023/01/23(月) 07:23:09.72ID:HN6zkKZyd
>>159
返事しやがったwww
2023/01/23(月) 07:36:54.35ID:rT2ytU3d0
>>162
ハッシュ復号で顔真っ赤w
2023/01/23(月) 07:39:15.92ID:HN6zkKZyd
無理ありすぎ
157の発言内容で恥さらしたと思ったの
おまえだけだから
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況