• ベストアンサー

cの実装している乱数でシュミレーションしているのですが、

rand()関数を使って2次元正方格子(100*100)の最近接結合、 a.2値ランダム相互作用(-J,J) b.強磁性体相互作用(J>0) c.反強磁性体相互作用(J<0) でのisingモデルをシュミレーションしたい、たとえば平均磁化mを求めたいのですが、実装している乱数ではすぐに周期がオーバーするような気がするのですが、何かいい乱数とかはありませんか? もし外部から関数を引っ張ってくるとしたらその計算も速い、あまり計算がかからないものがあるとうれしいです。 このシュミレーションでは乱数の周期性は問題にならないなら、実装の乱数を使うのですが、どなたか教えてもらえますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.1

まず初めに、「シュミレーション」は間違いです! 正しくは「シミュレーション」です。 元の英語のスペルを見て下さい。 それはさておき、高速で周期が長い乱数発生モジュールということですが、参考 URL のようなものはいかがでしょうか? 私は実際に使ったことはないので、検証はできていませんが…

参考URL:
http://www.emit.jp/mt/mt.html
f040231m
質問者

お礼

ありがとうございます、これをプログラムに付ければいいのですか? まず動いているかの確認してから使いたいと思います。

関連するQ&A

  • 標準正規分布の乱数

    RAND()関数は ((double)rand() / (1.0 + RAND_MAX))と定義します。 中心極限定理により、一様乱数を足し合わせると正規分布に近づくことから、 x = 分散 * (Σ[1~12]RAND() - 6) + 平均 で正規乱数が作れる。標準正規分布は分散1、平均0なのでその乱数は x = Σ[1~12]RAND() - 6 ですよね。この乱数を例えば100個羅列するにはどうしたらいいのでしょうか? もし間違ってたら指摘してください。 参考文献「Cによるシミュレーションプログラム 石川宏」 #include <stdio.h> #include <stdlib.h> #define RAND() ((double)rand() / (1.0 + RAND_MAX)) #define NUMBER 10000 /* 発生させる乱数の数 */ main(void) { int j; double u, x; srand(5); for (j = 0; j <= 11; j++) { u = u + RAND(); } x = u - 6.0; }

  • 反強磁性の磁化率について

    反強磁性体の磁化率はネール温度までは磁化率が上昇しますがそれはなぜですか? 私の考えとしては、温度を上げるとスピン間の相互作用が弱まり外部磁場の影響を受けやすくなり自化しやすくなるためと思ったのですが、実際どうなのでしょうか? どなたか回答お願いします。

  • 乱数の生成方法

    乱数を生成するソースコードを探しています rand関数で生成される乱数はよい乱数ではないようで それ以外でいい乱数を生成する方法はどのようなものがあるのでしょうか また、実装したソースコードのサンプルがあればWEBページなどを教えていただきたいです

  • 反強磁性体の磁化曲線

    反強磁性体の磁化曲線はどのようになりますか? 強磁性体のようなヒステリシスループは描かれ無いのでしょうか? 教えてください。

  • 磁気相互作用について

    強磁性や反強磁性にある磁気相互作用はどのような作用(力)ことなのでしょうか? 教えてください。。。

  • エクセルで0超1未満の乱数を発生する方法

    タイトルの通りです。 EXCELのRAND関数は0以上1未満の乱数を発生しますが、0超1未満の乱数を作る方法を教えて下さい。 確率の検証用に乱数を作りたいのですが、0や1(0%や100%)は除きたいのです。もちろん非常に小さい数でも0でなければ採用したいのですが0だけはダメです。 実用上、RANDでも0は殆ど出ないとは思いますが…あるいは乱数を発生させておいて0になった時だけ再計算させれば良いのかもしれませんが、出来れば再計算無しで最初からそうしたいのです。

  • スピングラス 交流磁化率

    今、希薄磁性半導体について学んでいます。 その内容で、スピングラスやガラス相という言葉が出てきたのですが、スピングラスとガラス相は同じ意味ですか? (スピングラス=ガラス相?) またスピングラスは、強磁性相互作用と反強磁性相互作用とがランダムに入り混じっている状態ということまでは分かりました。 私が読んだ論文では、χ‐T曲線(磁化率対温度曲線)にピークが出たから、この時スピン系がガラス相になった、と書かれていたのですが、なぜそう分かるのでしょうか?これは単なる常識なのでしょうか? 最後に、交流磁化率にはなぜ実部と虚部があるのでしょうか? 実部と虚部の意味とは何なのか説明できなくて困ってしまいました… (これは交流電流に関係しているのでしょうか?) 分からないことだらけですが、何か1つでもお分かりになる事があれば回答お願いしますm(__)m

  • 反強磁性的相互作用とは?

    某国立大学の大学院入試の過去問で、 反強磁性的(な)相互作用という言葉が出てくるのですが、 これはどういった意味なのでしょうか。 強磁性や反強磁性などについては文献などで理解しているつもりなのですが、 それらの相互作用というのがよく分かりません。 どなたか詳しい方、ご教授お願いします。

  • コインゲームの利得をエクセルでシミュレーション

    コインを投げて表が出れば1円受け取り、裏が出れば1円支払うというゲームを500回行います。 この結果(受け取り合計金額、支払の場合は受け取り額はマイナス)をエクセルでシミュレーションするには以下の方法でできるそうですが、何故このやり方でこのゲームの結果をシミュレーションしたことになるのかが私には理解できません。 (1)エクセルのRAND関数を使って乱数(0~1)を500個発生させ、 (2)発生させた乱数をNORMSINV関数にかける (3)NORMSINV関数によって出力された値を合計する→この合計値がシミュレーションの結果となる ご教示いただけるとありがたいです。

  • 乱数の利用

    よろしくお願いします。 エクセル、あるいは同様の表計算ソフトには乱数の関数がありますが、 実際に利用された経験がある方がいらっしゃいましたら、 何にどのように利用されたかを教えてください。 ちなみに、私の場合は、大学時代に物理のシミュレーションをやった以外ですと、 あらかじめ、RAND関数とRANK関数を使った表を作っておき、 このQ&Aサイトでアンケートの質問を投稿して、ベストアンサーを決定する際、 その日の日付の数だけ再計算ボタンを押して(6月17日なら17回)、 順位がいちばん上になった番号の回答をベストアンサーにする、といった用途ぐらいです。 ですので、もっと実用的で有効な応用があれば、知りたいです。 生活に密着したことから、趣味、お仕事あるいは高度な応用まで、様々なご回答を歓迎いたします。