モンテカルロ・シミュレーションのオンライン教科書 C言語版 |
このホームページは、乱数をたくさん発生させ、確率実験を行なう手法――これをモンテカルロ・シミュレーションといいます――のオンライン教科書です。こちらC言語版です。Javaアプレット版はこちら
確率論 統計学 オペレーションズリサーチ 待ち行列理論 トラヒック理論 雑音解析 ディジタル信号処理などに興味のある方、コンピュータ上で確率実験を行いながら理解を深めることができます。
1994年に、著者はソフトバンク社から「Cによるシミュレーションプログラミング」 という本を、出版しました。
|
|
- 単行本: 286ページ
- 出版社: ソフトバンク株式会社
- ISBN-10: 4890525491
- ISBN-13: 978-4890525492
- 発売日: 1994/07
- 著者: 石川 宏
|
現在それは絶版となっています。しかしながら、その後、それを大学などの教科書に使いたい、再版しないのかなどの問い合わせが いまだにあります。
そのため2009年にホームページ上から、直接 プログラムを実行出来るように、CプログラムをJavaアプレットに変換し、オンライン化したところです。
しかしながら、最近セキュリティの問題からJavaアプレットが使えないブラウザが増加し、Javaアプレットは主流ではなくなってきたようです。そのためあらためてC言語のままで公開することにしました。C言語は普遍的です。(Javaアプレット版はこちらに残してあります)
このホームページの各章の解説にソースプログラムを表示するほか、73本のソースプログラムを一括してこちらからダウンロードできます。
1994年当時のパソコンはまだWindowsのない16ビットのMS-DOSの時代で、使用した開発環境はPC-98、ボーランド社のTurboCでした。最近そのTurboCがWindows7、10上でそのまま動かすことができる、フリーソフトTurboC++ for Windowsを見つけましたので、それを用いることとします。
また、Raspberry Piは小さいながらUNIXマシンであり、当時SUNワークステーション用に作っていたバージョンが動かないか試してみました。問題なく快適に開発・実行ができましたので、報告します。
加えて今回、ブラウン運動の応用としてDLA(Diffusion-limited aggregation)シミュレーションを新規に書き加えました。
Step1 TurboC++ for Windowsをダウンロード
Step2 zipファイルTurbo.C.3.2.zipを展開
Step3 setup.exeを実行 TURBOC3フォルダは、c:ドライブ直下に置きました。
Step4 当サイトから、Cによるシミュレーションプログラムをダウンロード、展開
Step5 展開したファイルをsimulationフォルダごとC:\TURBOC3の下にすべてコピー
Step6 そのなかのcompti.hとwindow.hをINCLUDEフォルダにコピー
これでCによるシミュレーションプログラムがコンパイル、実行できます。ただし制約事項があります。16ビット版のTurboCを64ビット版Windows上で動かすため、「MS-DOS環境」を再現するエミュレータ「DOSBox」を用いています。DOSBoxが日本語をサポートしていないので、日本語メッセージが化けます。またキーボードがUS101
キーボードを前提としているので、特殊文字のキイトップがあいません。したがって、ソースプログラムの編集はWindows上のエディタ(私は秀丸)を用い、コンパイルと実行をTurboCで行うこととします。DOSBoxの日本語化のサイトもあるようですが、トライしていません。
私のデスクトップ(1280X1024)の例。右上がTurboC++ for Windows。秀丸エディタと比べると、日本語のコメントが正しく表示されていない。秀丸でソースを編集・保存し、TurboC++
for Windowsでコンパイル・実行する。
実行結果はTurboC++ for Windowsのユーザスクリーン(640X480)上に表示される。ユーザスクリーンへの切り替えはショートカットで。
TurboC++ for Windowsのよく使うショートカットは次のとおり
F1 |
ヘルプ |
F2 |
ファイル保存 |
F3 |
ファイル開く |
Alt+F9 |
コンパイル |
Ctrl+F9 |
実行 |
Alt+X |
TurboC終了 |
Alt+Enter |
フルスクリーンへ切り替え |
Alt+F5 |
ユーザスクリーンへ切り替え |
Ctrl+F10 |
マウスをDOSBox内とWindowsで切り替え |
Raspberry Piをセンサーとして動かすことは何度もやってきましたが、今回プログラム開発のUNIXマシンとして動かしました。意外とストレスなく、当たり前ですが、20年前に作ったシミュレーションプログラムがそのまま動かせました。ただしC言語の仕様がセキュリティー対策のためか、いくつか変更になっていましたので、修正(下のとおり)してあります。こちらからシミュレーションプログラムの最新版をダウンロードしてください。(2018/11/01))
1.RsuberryPiとしては、最も高速なクアッドコアCPUのPi3モデルB(標準的)をつかう
2.OSとしてはDebian系Linuxの「Raspbian通常版」を使いました。海外サーバーはダウンロードが遅いので日本ミラーからダウンロードする
http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/
3.フォーマットしたSDにWin32DiskImagerで書き込む
4.IPアドレスを固定する。
5.Windows側からファイル共用するためSambaをインストールする。プログラムの編集はWindows上の秀丸で行っています。
6.X WindowのX11ライブラリをインストールする
$ sudo apt-get install xorg-dev
7.当方のサイトから、Cによるシミュレーションプログラムをダウンロード、展開
8.ホームディレクトリの下の
$ ~/simiulation
に展開したプログラムをすべてコピーする
9.コンパイルはつぎのとおり
$ cd simulation
$ gcc S0510.C -o test -lm -lX11
-lmはmath.h 、-lX11は X Window Systemライブラリのため
10.実行は
$ ./test
下はRaspberryPIで5章のビュフォンの針を実行したときのスクリーンです。実行速度は並みのパソコンより速いくらいです。
/* 古い仕様 */
void main(void){
}
|
/* 新しい仕様 */
int main(void){
return 0;
}
|
このほかキーボードからgets()での読み込みはやめました。
|