アカウント名:
パスワード:
論理的には同等でも、感性的・美学的な違いというものがあります。世間やネットで流通しているのはめちゃくちゃ古い美学の定義なのでみんな知らないが、今日においては感性的な判断すべてが美学の対象になります。for(;;){...}とwhile(true){...}のどちらを好むのかもそうですね。open_fileとopenFileとOpenFileの違いもそう。みんな感性的な判断をプログラムのロジックと区別せず説明しようとするから混乱するのです。
この二つは論理的に、同等ってレベルじゃなくて、メッセージリソースの差し替えだけで、弟のほうも兄のほうも完全に同一のコードで実装できるってレベルで同じことなんだよな。
なるほど確かに。表示する文字列以外一切同じプログラムで書ける。
// 弟バージョン(0=グー、1=チョキ、2=パー)switch(乱数){case 0: switch(入力){ case 0: print("コンピュータがグーで、プレイヤーもグーなので、引き分け"); break; case 1: print("コンピュータがグーで、プレイヤーがチョキなので、コンピュータの勝ち"); break; case 2: print("コンピュータがグーで、プレイヤーがパーなので、プレイヤーの勝ち"); break; } break;case 2:
論理的に同等ではないだろう。乱数の種を起動時の time() で与えるというようなよくある実装の場合、理論上は乱数をすべて予想することができる。あるいはサイドチャネル攻撃で、現在の乱数生成器の状態を知ることも理論上不可能ではない。そのとき、次男方式ではプレイヤーが常勝できるが、長男方式では 1/3 しか勝てない。
そこまでできるなら、同様に多く試行していけば長男側の乱数の予想は理論上可能だろう。ならば長男の方は勝てないとわかったらリセットしてしまうのも理論上不可能ではない。連勝の話がでてきてないので理論上1/3しか勝てないというのはあやまり。1/3といってしまっているから理論上単発の勝負だろうし。
「連勝の話がでてきてないので」というのは、連戦しないなら勝てないと分かった時点でリセットしても問題はなかろうという話にしたかった。ちょっとわかりにくかったので補足しとく。
いえ、割と現実的な前提ですよ。
悪名高いCのrand()関数どころか、メルセンヌツイスター辺りのすばらしい乱数でも、「暗号・セキュリティ用途には使うな」とマニュアルに明記されているんですよ。「乱数の列から次の値やシードを推測する」ような逆計算への耐性は考慮して設計されていないから、と。
ということは、サイドチャネル攻撃まで仕掛けなくても、プレイしているうちにシードを絞り込めて、ある程度のプレイ回数より後は勝ち続けられる可能性があります。カジノで朝から晩までずーっと眺めていた数学者が夕方以降、店が閉まるまで連勝し続けるとか、そういう危険性があるので、カジノのオーナーとしては兄バージョンを採用した方が気が楽でしょうね。
ちなみに、ちらっと調べたところだとメルセンヌツイスターのシードは19936ビット。グー著キーパーの1/3で絞り込んでいくと、確定に必要な期待値はlog2/log3倍して、12578回ぐらい。…サイドチャネル攻撃の方が現実的かも。
ジョークに真顔で突っかかる人がいるのもよく見られますね。
ジャンケンのルールだと長男方式でも次男方式でも判定テーブル9通りしかないので速度は変わらなさそうですが、ジャンケンに手が増えた、とか、勝ち負けあいこ以外の結果が増えた、という時にどちらが最適化しやすいか とか考えだすと止まらなくなるので誰かお願いします。
お願いなら言わざるを得ませんね
バカはジョークの一生を送って、考えるだけで結論を出さずに死ね
バカ! 死ね! って。イライラすんなよ。ハゲるぞ。
これ以上ハゲねーよバーカバーカ
もうこんな話はやめて!
だから黙れハゲ
ストレスでハゲるわ。
論理に論理で返されて感情的な人格攻撃に走るのは一番みっともないな
プログラムだからね。ここに出てくる乱数は数学的な意味の乱数じゃない。乱数シードの話が出来るのはごく当然。まして兄弟が作ったプログラムが実装されてる環境が明記されてるわけでもなく、Z80のリフレッシュレジスタを使った古典的な脆弱乱数かもしれないし、もっと言って乱数の初期化すらしてない固定出力かもしれん。プログラムの乱数は言うほど乱数じゃないのよね。
>open_fileとopenFileとOpenFileの違い普通に、使用言語を決めた段階でベースとなるものが決まるので(既に用意されている言語仕様に合わせる)ので選択肢はほぼないよ。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー
美学的な違い (スコア:-1)
論理的には同等でも、感性的・美学的な違いというものがあります。世間やネットで流通しているのはめちゃくちゃ古い美学の定義なのでみんな知らないが、今日においては感性的な判断すべてが美学の対象になります。
for(;;){...}とwhile(true){...}のどちらを好むのかもそうですね。open_fileとopenFileとOpenFileの違いもそう。
みんな感性的な判断をプログラムのロジックと区別せず説明しようとするから混乱するのです。
Re:美学的な違い (スコア:2, すばらしい洞察)
この二つは論理的に、同等ってレベルじゃなくて、メッセージリソースの差し替えだけで、弟のほうも兄のほうも完全に同一のコードで実装できるってレベルで同じことなんだよな。
Re: (スコア:0)
なるほど確かに。表示する文字列以外一切同じプログラムで書ける。
// 弟バージョン(0=グー、1=チョキ、2=パー)
switch(乱数){
case 0:
switch(入力){
case 0: print("コンピュータがグーで、プレイヤーもグーなので、引き分け"); break;
case 1: print("コンピュータがグーで、プレイヤーがチョキなので、コンピュータの勝ち"); break;
case 2: print("コンピュータがグーで、プレイヤーがパーなので、プレイヤーの勝ち"); break;
}
break;
case 2:
Re:美学的な違い (スコア:1)
論理的に同等ではないだろう。
乱数の種を起動時の time() で与えるというようなよくある実装の場合、理論上は乱数をすべて予想することができる。
あるいはサイドチャネル攻撃で、現在の乱数生成器の状態を知ることも理論上不可能ではない。
そのとき、次男方式ではプレイヤーが常勝できるが、長男方式では 1/3 しか勝てない。
Re: (スコア:0)
そこまでできるなら、同様に多く試行していけば長男側の乱数の予想は理論上可能だろう。
ならば長男の方は勝てないとわかったらリセットしてしまうのも理論上不可能ではない。
連勝の話がでてきてないので理論上1/3しか勝てないというのはあやまり。
1/3といってしまっているから理論上単発の勝負だろうし。
Re: (スコア:0)
「連勝の話がでてきてないので」というのは、連戦しないなら勝てないと分かった時点でリセットしても問題はなかろうという話にしたかった。
ちょっとわかりにくかったので補足しとく。
Re:美学的な違い (スコア:1)
いえ、割と現実的な前提ですよ。
悪名高いCのrand()関数どころか、メルセンヌツイスター辺りのすばらしい乱数でも、
「暗号・セキュリティ用途には使うな」とマニュアルに明記されているんですよ。
「乱数の列から次の値やシードを推測する」ような逆計算への耐性は考慮して設計されていないから、と。
ということは、サイドチャネル攻撃まで仕掛けなくても、プレイしているうちにシードを絞り込めて、
ある程度のプレイ回数より後は勝ち続けられる可能性があります。
カジノで朝から晩までずーっと眺めていた数学者が夕方以降、店が閉まるまで連勝し続けるとか、
そういう危険性があるので、カジノのオーナーとしては兄バージョンを採用した方が気が楽でしょうね。
ちなみに、ちらっと調べたところだとメルセンヌツイスターのシードは19936ビット。
グー著キーパーの1/3で絞り込んでいくと、確定に必要な期待値はlog2/log3倍して、12578回ぐらい。
…サイドチャネル攻撃の方が現実的かも。
Re: (スコア:0)
ジョークに真顔で突っかかる人がいるのもよく見られますね。
ジャンケンのルールだと長男方式でも次男方式でも判定テーブル9通りしかないので速度は変わらなさそうですが、
ジャンケンに手が増えた、とか、勝ち負けあいこ以外の結果が増えた、という時にどちらが最適化しやすいか とか考えだすと止まらなくなるので誰かお願いします。
Re:美学的な違い (スコア:1)
ID投稿じゃないからでしょうw
Re: (スコア:0)
お願いなら言わざるを得ませんね
バカはジョークの一生を送って、考えるだけで結論を出さずに死ね
Re: (スコア:0)
バカ! 死ね! って。イライラすんなよ。ハゲるぞ。
Re: (スコア:0)
これ以上ハゲねーよバーカバーカ
Re: (スコア:0)
もうこんな話はやめて!
Re: (スコア:0)
だから黙れハゲ
Re: (スコア:0)
ストレスでハゲるわ。
Re: (スコア:0)
論理に論理で返されて感情的な人格攻撃に走るのは一番みっともないな
Re: (スコア:0)
プログラムだからね。ここに出てくる乱数は数学的な意味の乱数じゃない。乱数シードの話が出来るのはごく当然。
まして兄弟が作ったプログラムが実装されてる環境が明記されてるわけでもなく、Z80のリフレッシュレジスタを使った古典的な脆弱乱数かもしれないし、もっと言って乱数の初期化すらしてない固定出力かもしれん。
プログラムの乱数は言うほど乱数じゃないのよね。
Re: (スコア:0)
>open_fileとopenFileとOpenFileの違い
普通に、使用言語を決めた段階でベースとなるものが決まるので(既に用意されている言語仕様に合わせる)ので選択肢はほぼないよ。
Re: (スコア:0)