inquisitorソフトウェア関係の雑誌を読んでいたら、次のようなことが書かれていました。「0以上1未満の一様乱数を12回足して6を引くと正規乱数になる」というテクニックを覚えておけば、一様乱数しか提供されていない開発環境で大いに役立つはずだこれは中心極限定理のいい例ですね。実際に乱数を大量(下の絵では100万個)に発生させてそのヒストグラムを描いてみると、正規分布になっているように見えます(太線は正規分布)。これで十分な場合も多いでしょう。正規性の検定をすると、正規分布であるという仮説を棄却したくなるようなp値が得られます。Mathematicaで試します(参考:DistributionFitTest)。10この方法で生成される乱数の分布は、足す数(上の例では12)を増やせば正規分布に収束しますが、正規分布ではありません。「正規乱数になる」という表現はいけません。12)/Sqrt[2]」ならもっと正規分布に近づきますが、依然として正規分布ではありません。)一様乱数しか提供されていない環境では、ボックス=ミュラー法などを使うのがいいと思います。Excelでは「=NORM.INV(RAND(),0,1)」が簡単です。1993)にこんな記述がありました。悪いrand()のため結果が疑わしいすべての科学論文を図書館の棚から消せば、各棚にこぶしが入るほどの隙間ができるであろう。(p.203)「悪いrand()」ではなく「悪い乱数」を対象にすると、隙間はどのくらいになるのでしょう。inquisitor事例が見つかるたびに騒ぎになっているようです。7.2」の結果が1より小さくなってしまうというものです。最初に非難されたのは例によってExcelのようですが、他の環境でもこういう問題は起こります(C言語の例・Rubyの例)。0;}「コンピュータは数値を2進数としてしか表せなくて・・・」という説明をよく見ますが、この説明は間違いです。これでは、「コンピュータは正しい計算ができない」という誤解を生んでしまいます。...で表すという具合に、数を2進数で直接表現しようとするとこういう問題が起きますが、別の表現方法を用いれば、このような問題は起きません。実際、Mathematicaは正しく計算します。1コンパイルしても大丈夫です。(UMMでは動かないようです。1C言語やRubyではどうすればいいのかというと、許容可能な誤差を決めておいて、その範囲内はよしとするのです。この許容可能な誤差は、扱う数によって変えなければならないことに注意してください。以下の例では、許容可能な誤差を1より大きくしなければなりません(実行結果)。C++入門』の3.2.11項「浮動小数点についての注意」にちゃんと書いてあったりします。入門を終えたプログラマはこういうことは知っています。Excelのような、こうことは知らないであろう人が使うソフトウェアでは、こういう工夫をしなくても正しく計算できるようにしておいてほしいものです。合格」というようなことって、よくやられているのではないでしょうか(ボーダーの学生が間違って不合格になる危険があります)。間違いが公になるときには、「採点ミス」になるのでしょうか。inquisitorMathematicaはバージョン6でDynamicというおもしろい機能が追加されました(動的言語とは関係ありません。もとから動的ですし)。いろんな解釈があると思いますが、Dynamicで何ができるかというと、Excelのようなプログラミングです。ここで考えているExcelの機能とは、複数のセルが関連しているところで、あるセルの値が変更されると、関連するセルの値が自動的に再計算される、というものです。Dynamicによって、Mathematicaのプログラミングスタイルは大きく変わると思うのですが、残念ながら、今のところは「GUIを簡単に作れる」という応用が主になっています。Playerがインストールされていれば実際に動かすことができます。「こういうことがCAD上でできたらおもしろい」と思ったのですが、AutoCADなんかですでに実現されていますね。Mathematicaを使う人たちは、もっと別の応用を考えなければいけないのです。inquisitorExcelで「850*77.1」を計算すると100000になるように見えるというバグが話題になっている。「なる」ではなく「なるように見える」と書いたのは、結果をグラフなどで2次利用する際には問題ないから(つまり内部では正しい値を持っている)。結果をそのまま使う場合には問題になる。Blogで取り上げられていて(上の画像もこのブログへの直リンク)、似たような話として、40000.223と入力したつもりが40000.2229999999になってしまう(逆ではない)例が紹介されていた。「テストで見つけるには相当な知識が必要だよ」とか、「ふつうの処理系はハードウェアに組み込まれた精度での計算しかしないが、Mathematicaは任意の精度で計算できるから大丈夫」とのこと。「テスト」なんてそんなにありがたいものではないと私は思っているし、計算結果の信頼性はExcelよりMathematicaのほうが上だというのもそのとおりかもしれない。それは程度の問題であって、Mathematicaだって完璧ではない。先日の問題で、「10^-4」と書くところを「0.0001」にしたりすると、Mathematicaだって正しい結果は返してくれない。inquisitorシンプル版これが「はやい」かと言えば、そんなことはないと思う。「範囲を選択してグラフ・ウィザード・ボタンをクリック」のほうがたぶんはやい。人前でこれをやればうけるんじゃないか。いうわけで、実はプレゼン向け?こだわり版あまりにデザインがひどいから、本番ではほとんど使ったことがないExcelのグラフ。リニューアルの際には、ぜひhotcaptchaを採用してほしい。