Erzeugung von Zufallszahlen in einem bestimmten Bereich in Fortran 77
Ich bin ein Anfänger, der versucht zu tun, einige engineering-Experimente unter Verwendung von fortran 77. Ich bin mit Force-2.0-compiler und editor. Ich habe folgende Abfragen:
- Wie kann ich eine Zufallszahl erzeugen, die zwischen einem bestimmten Bereich, wenn ich z.B. Notwendigkeit zu erzeugen, eine einzige zufällige Zahl zwischen 3.0 und 10.0, wie kann ich das tun?
- Wie kann ich die Daten aus einer text-Datei aufgerufen werden, in den Berechnungen in meinem Programm. e.g ich habe die Temperatur -, Luftdruck-und Luftfeuchte-Werte (Stundenwerte für einen Tag, also insgesamt 24 Werte in jeder text-Datei).
- Benötige ich auch, um zu definieren, in das Programm, wie viele Werte gibt es in der text-Datei?
Auf welcher Plattform bist du?
ist es eigentlich egal, mit fortran. Solange es folgt dem standard, es ist so ziemlich das gleiche.
ist es eigentlich egal, mit fortran. Solange es folgt dem standard, es ist so ziemlich das gleiche.
InformationsquelleAutor | 2009-05-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fortran-77 - standard nicht spezifiziert a random number generator, aber Sie können verwenden Sie eine der zahllosen Quellen frei zur Verfügung gestellt für diesen Zweck; http://www.cisl.ucar.edu/zine/96/spring/articles/3.random-6.html z.B. hat eine gute, brauchbare f77
SRAND
Unterprogramm für Sie bereit, zu kopieren und einzufügen.InformationsquelleAutor Alex Martelli
Knuth hat veröffentlicht in der public-domain-Quellen in C und FORTRAN für die pseudo-Zufallszahlen-generator, beschrieben in Abschnitt 3.6 Die Kunst der Computer-Programmierung.
InformationsquelleAutor las3rjock
2. Frage:
Wenn Ihre Datei zum Beispiel wie folgt aussieht:
diesem einfachen Programm, es zu Lesen:
(der Gedankenstrich ist ein wenig verkorkst, aber ich weiß nicht, wie Sie genau in diese seltsame Umgebung)
Mein Rat: Lesen bis auf die Datentypen (INTEGER, REAL, CHARACTER), arrays (DIMENSION), Eingabe/Ausgabe (READ, WRITE, OPEN, CLOSE, RÜCKLAUF) und Schleifen (TUN), und Sie werden tun Sie nützliche Sachen in kürzester Zeit.
Ich habe noch nie etwas mit Zufallszahlen, also ich kann dir nicht helfen, aber ich denke, es gibt einige intrinsische Funktionen in fortran. Ich werde das ausprobieren und morgen berichten. Für die 3. Frage, ich bin mir nicht sicher, was Sie ment (Sie weiß nicht, wie viele Zeilen von Daten werden in einer Datei ? oder ?)
InformationsquelleAutor Rook
Findest du in Ihrem compiler-Handbuch für die spezifischen random number generator-Funktion, aber die Chancen sind es erzeugt Zufallszahlen zwischen 0 und 1. Dies ist einfach zu handhaben - Sie müssen nur die Skala Intervall die richtige Breite, dann richte Sie entsprechend die richtigen Startpunkt: d.h. Karte
r
im[0, 1]
zus
im[a, b]
verwendens = r*(b-a) + a
, wor
ist der Wert, den Sie von Ihrem Zufallsgenerator unds
ist ein zufälliger Wert in den Bereich, den Sie möchten.Idigas Antwort betrifft Ihre zweite Frage gut zu Lesen, in Daten mit formatierte Eingabe, verwenden Sie Sie dann wie jede andere variable.
Für Ihre Dritte Frage, die Sie brauchen, um zu definieren, wie viele Zeilen gibt es in der text-Datei nur, wenn Sie etwas tun wollen, mit Ihnen allen - wenn Sie beim Lesen die Zeile, die Verarbeitung, dann bewegen Sie sich auf, können Sie durch zu bekommen, ohne zu wissen, die Anzahl der Zeilen vor der Zeit. Allerdings, wenn Sie auf der Suche zum speichern aller Werte in der Datei (z.B. mit arrays von Temperatur, Feuchtigkeit und Druck, so können Sie berechnen, Dampfdruck-Statistik), müssen Sie den Speicher einrichten, irgendwie. In der Regel in FORTRAN 77, dies wird durch pre-allocating ein array mit einer Größe größer als Sie denken, Sie brauchen, aber dies kann schnell problematisch werden. Gibt es eine chance der Umstellung auf Fortran 90? Die aktualisierte version hat viel bessere Anlagen für den Umgang mit standardisierten dynamische Speicherzuweisung, nicht zu schweigen von den vielen weiteren Vorteilen. Ich würde stark empfehlen die Verwendung von F90-wenn überhaupt möglich - machen Sie Ihr Leben viel einfacher.
Andere option, je nach der Art der Verarbeitung, die Sie tun, wäre zu untersuchen-algorithmen, bei denen nur einzelne Durchläufe durch die Daten, so dass Sie nicht brauchen, um alles zu speichern, zu berechnen Dinge wie Mittelwerte und standard-Abweichungen, zum Beispiel.
InformationsquelleAutor Tim Whitcomb
Diese Unterroutine eine zufällige Zahl erzeugt, die in fortran-77, der zwischen 0 und ifin
wo soll ich die Samen; einige große Zahl, wie 746397923
Können Sie modifiziert, um einen bestimmten Bereich.
Das ist nicht ganz versichern. Was bedeutet "ziemlich Pseudo"? softwareengineering.stackexchange.com/questions/147134/... en.m.wikipedia.org/wiki/Diehard_tests
Ja, ich erinnere mich, verwendet worden HNO zu testen, die sieries, war fast 15 Jahre her oder etwas ähnliches.
InformationsquelleAutor Hender