![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_01.png?5a7ff87)
No.4
- 回答日時:
Fotran なので多少異なる場合があります。
多分 32ビットの符号付整数を16ビット符号付整数で割るという一般的ルーチンを使っていると思います。
3次元ですとたしか13面に収束するのでちょっと面倒ですが。
この擬似乱数プログラム(乱数の入門ですからどこかに有るかと思います)を探してきて.組込み関数を使わずに個別のルーチンとして使うのが簡単な方法化と思います。
なお.確実な擬似らん数は.外部配列にテーブルを作り.組込み関数でかき混ぜるのがなんと言っても楽です。周期を自分で管理できますから。
モンテカルロでちょっと遊んだときに目いっぱい苦しんだのが乱数の周期性です。少しならばなんとでもなるのですが.ある程度大きくなると周期性とかたよりが出てしまって苦しみます。通常無限大に発散させれば偏りが消えることにはなっていますが.実数で偏りを除くのに苦労しました。
No.3
- 回答日時:
どの環境でプログラミングしておられますか?
超高速で複数のsrandをする場合はこの方法ではダメかもしれませんが、
Win32で作っているならば
GetLocalTime()等のAPIを使って
ミリ秒を取得し、それを使って乱数を初期化すれば良いと思います。
もっとシビアなタイミングに対応するならば
環境は限られてくるかもしれませんが、
QueryPerformanceCounter()APIを使うと
ミリ秒よりも高精度な値が取れます。
No.2
- 回答日時:
お使いの環境に乱数装置が実装されていないか調べてみるといいかもしれません。
FreeBSDにはsrandomdev() という乱数装置を利用した乱数系列初期化ルーチンとrandom()という比較的高精度な32bit乱数が実装されています。
この乱数はsrand()/rand()より3割ほど遅いが乱数の精度はずっとよいものです。
#1氏がツッこんでいる「生成されるたびに」ということですが、毎回srandするのではなく、例えばCGIで、複数のプロセスが独立に起動されることを想定しているのでしょうか。
その場合でしたら、共有メモリにカウンタを用意するとか、プロセスid(などのプロセスに固有の値)+time(NULL)をキーにするなどすれば、よいのではないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- 数学 既存の数列のランダム性について(初歩的質問) 2 2022/06/07 20:04
- 統計学 風速を1秒刻みで推定する方法 6 2023/03/03 11:58
- 工学 疑似乱数生成器 3 2023/01/05 02:06
- Java Java 石取りゲーム 3 2023/02/02 15:46
- パチンコ・スロット パチンコ当たり抽選 3 2022/04/20 23:26
- Java Javaの問題なのですが、 永久ループを使って以下に従って数値を出力するプログラムを作成する。 ・1 3 2023/06/06 18:43
- その他(Microsoft Office) 同じフォーマットのCSVファイル複数枚(行数は異なる)を1枚のエクセルファイルにしたいのですが簡単に 3 2023/01/05 16:24
- 画像編集・動画編集・音楽編集 動画をディスク作成すると画像が乱れる。 4 2022/06/24 07:49
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
explorer.exeが異様にメモリを食う
-
IISがフリーズ
-
Linuxでのスレッド間メッセージ...
-
VB.NET 自プログラムのプロセス...
-
パソコンに出てくるじゃまな表...
-
他のコンピュータのプロセスを取得
-
共有メモリの同時アクセスにつ...
-
Apacheの子プロセスが再起動す...
-
C#でのbatファイル実行結果取得
-
WMIでのプロセスの起動・終了監...
-
コマンド実行時の結果のリダイ...
-
sleep関数の精度について
-
OSPFでプロセスを分ける意義に...
-
SendMessageが失敗するときがある
-
Windowsでのfork方法
-
特定ユーザーのプロセス情報を...
-
c言語でプロセスIDを調べたい
-
C++でシェルを起動
-
他のアプリケーションをクリッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
explorer.exeが異様にメモリを食う
-
タスクマネージャーのプロセス...
-
VB6.0 SHELLで起動...
-
C#でのbatファイル実行結果取得
-
プロセスのアタッチ・デタッチ...
-
プロセスIDからウィンドウハ...
-
プロセスIDの取得方法について
-
popen について
-
C++のプログラムをバックグラウ...
-
非表示になったエクセルは?
-
Windowsでのfork方法
-
別のプロセスの関数を呼び出す...
-
sleep関数の精度について
-
Visual C++からpingを実行して...
-
ADOでアクセスのレコードに...
-
C++でシェルを起動
-
SendMessageが失敗するときがある
-
ウィンドウのタイトルからプロ...
-
OSPFでプロセスを分ける意義に...
おすすめ情報