2009-05-22 65 views
1

私はfortran 77を使っていくつかのエンジニアリング実験を試みる初心者です。私はForce 2.0コンパイラとエディタを使用しています。私は次のクエリを持っています:Fortran 77で指定された範囲の乱数を生成

  1. どのように指定された範囲内の乱数を生成できますか?私が3.0と10.0の間に単一の乱数を生成する必要がある場合、どうすればいいですか?
  2. テキストファイルのデータをプログラムの計算で呼び出す方法を教えてください。例えば、私は温度、圧力、湿度の値を持っています(毎日の時間の値なので、各テキストファイルの合計値は24です)。
  3. また、テキストファイルにいくつの値があるのか​​をプログラムで定義する必要がありますか?あなたのファイルは、例えば、のように見える場合

+0

あなたはどのプラットフォームにいますか? – Evansbee

+0

@エヴァンズビー - それは本当にfortranとは関係ありません。それが標準に従う限り、ほとんど同じです。 – Rook

答えて

1

第二の質問

hour temperature pressure humidity 
00 15   101325 60 
01 15   101325 60 
... 24 of them, for each hour one 

この単純なプログラムは、それを読み込みます:

implicit none 
integer hour, temp, hum 
real p 
character(80) junkline 
open(unit=1, file='name_of_file.dat', status='old') 
rewind(1) 
read(1,*)junkline 
do 10 i=1,24 
read(1,*)hour,temp,p,hum 
C do something here ... 
10 end 
close(1) 
end 

(インデントが少ないです私はこの奇妙な環境で正しく設定する方法を知らない)

私のアドバイス:データ型(INTEGER、REAL、CHARACTER)、配列(DIMENSION)、入出力(READ、WRITE、OPEN、CLOSE、REWIND)、ループ(DO、FOR)すぐに役立つものをやっている。

私は決して乱数で何もしなかったので、私はそこであなたを助けることはできませんが、私はそれのためのfortranにいくつかの本質的な機能があると思います。私はそれをチェックし、明日報告する。 3番目の質問については、私はあなたが何をしているのか分かりません(ファイル内にいくつのデータ行があるのか​​分かりません)

3

Fortran 77の標準では乱数は指定されていませんその目的のために自由に提供されている無数のソースのいずれかを使用することができます。たとえば、http://www.cisl.ucar.edu/zine/96/spring/articles/3.random-6.htmlには、コピー&ペーストするのに便利なf77 SRANDサブルーチンが用意されています。

0

具体的な乱数ジェネレータ関数については、コンパイラのマニュアルをチェックしてください。しかし、0と1の間の乱数が生成される可能性があります。これは簡単に処理できます。つまり、r[0, 1]からsに、s = r*(b-a) + aを入力してください。rは、乱数ジェネレータの値です。sは、必要な範囲のランダムな値です。

Idigas's answerは、フォーマットされた入力を使用してデータを読み込み、他の変数と同様に使用します。

3番目の質問では、テキストファイルに何行あるのかを定義する必要があります。行を読み、処理してから、あなたは、前もって行数を知らずに得ることができます。ただし、すべての値をファイルに保存する場合(たとえば、温度、湿度、圧力の配列を持つことで蒸気圧の統計値を計算できる)、何らかの方法でストレージを設定する必要があります。通常、FORTRAN 77では、必要と思われるサイズよりも大きなサイズの配列を事前に割り当てることによってこれが行われますが、これはすぐに問題になることがあります。 Fortran 90に切り替える可能性はありますか?更新されたバージョンは、他の多くの利点はもちろん、標準化された動的メモリ割り当てを処理するための優れた機能を備えています。私は強くをお勧めします。可能であればF90を使用することをお勧めします。

処理の種類に応じて、データの単一パスのみを使用するアルゴリズムを調べることができます。したがって、平均や標準偏差などを計算するためにすべてを保存する必要はありません。例。

関連する問題