Zahl mir mehreren Milliarden Nachkommastellen analysieren?

... komplette Frage anzeigen

5 Antworten

Hallo

ich würde mal gerne die Zahl Pi [....] "analysieren" [....] Also zB so: 3,14159265358 das wären dann zwei mal die 1; ein mal die 2; zwei mal die 3 usw.

Wenn es nur darum geht zu zählen wie oft eine bestimmte Ziffer darin vorkommt, dann ist das recht einfach:

pi  | sed s'/1/1\\n/g' | wc -l

Hab im Moment 4 Milliarden Stellen in ner Textdatei

Du hast eine (Text)-Datei mit vier Milliarden stellen, dann zeig mal:

stat name_der_datei

und

wc -m name_der_datei

Falls Du mehr stellen möchtest, dann rechne mal so:

time echo "scale=5000000000; a(1)*4" | bc -l

Dann hast Du am Ende der Berechnung schon 5 Mrd. Stellen :-)

Linuxhase

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von hypergerd
14.03.2016, 10:02

a(1) {also per atan(1)} per bc zu berechnen, ist eines der langsamsten Wege zur Berechnung der Zahl Pi (könnte zig Monate dauern), da die Berechnungszeit exponentiell ansteigt!

Selbst 10000 Ziffern dauert bei mir schon mehrere 10 min, während y-cruncher.exe 1 Mrd. Ziffern in etwa 4 min berechnet.

0

Da das jeder Anfänger in jeder Programmiersprache kann {die Rechte auf Datei-LESEN hat}, und es über 1000 Sprachen gibt, könnten hier 1000 Antworten kommen...

Oder geht es Dir nur um das Ergebnis, welches bereits für 13,3 Bio. Stellen gibt:

Dezimal Ziffern 0 bis 9:

{1329997901677,1330001059130,1330000382404,1329999763181,1330000846145,1329998570679,1329999089279,1330001115701,1330001592224,1329999679580}

Hex Counts (0...F ): {690338343609,690338806518,690338700343,690337627621,690337826412,690337204361,690338561057,690336491172,690338098324,690339501812,690338035822,690339098646,690337570964,690339405377,690338214532,690337428931}

Die relativ gute Gleichverteilung der Ziffern beginnt schon bei 1000, was der Iterationsrechner im Beispiel 63 zeigt -> Bild 

Spalte aB absolutzahlen; Spalte aC relative Häufigkeit in %

(auf Textkodierung kann man per Button "Pi dezi" 1024 Ziffern laden; alternativ kann man dieses Feld auch per Zwischenablage mit Strg + v mit bis zu 100000 Zeichen füllen -> danach versagen die meisten Browser)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von hypergerd
14.03.2016, 11:42

Da ich diese Funktion auch häufiger brauche und viele andere Sprachen sehr langsam sind, habe ich per PureBasic eine sehr kleine und schnelle exe erstellt, die z.B. 10 GB Dateien (da ich 16GB habe) komplett in den RAM ließt und dann in weniger als 2 Sekunden das Ergebnis ausgibt. Wenn Du mir eine E-Mail schickst (schau Dir meine Antworten an -> auf der Haupt-Internetseite findet man meine Adresse als Bild), schicke ich sie Dir zu.

0

Kannst du Programmieren?
Dann ist es leicht. Wenn nicht kannst du auf Word mit der sich Funktion nach einer Zahl suchen und es gibt dir an wie oft es die Zahl findet.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von justinh2407
13.03.2016, 14:57

Ein paar Basics kann ich schon, auf der Commandline bin ich auch kein absoluter Anfänger :)

0

Speicherst die Zahl in eine TextDatei, öffnest sie mit Notepad++, gehst auf die Suchfunktion un tippst ein zB. 2 -> Und er sagt dann zB 1000 Ergebnisse.
Gruß

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von justinh2407
13.03.2016, 14:51

Schafft Notepad++ diese Zahlenmenge?

0
Kommentar von Dogukann
13.03.2016, 14:51

Müsste schon gehen.

0
Kommentar von Dogukann
13.03.2016, 18:59

@Linuxhase Man kann ja schließlich auch auf andere Editoren zugreifen. Die Methode klappt aber ;-)

0

Hallo!

Die "ersten" paar, wieviel milliarden hast'e den?

Diese müssen ja dann bei dir irgendwo abgespeichert sein, als Text/String, einfach durchzählen, Stelle für Stelle bis zum EOF (END of File) oder Ende des Strings (üblicherweise "\\0").

for(int i=0;i<EOF(file);i++){
if (character=='1') Eins++;
   else if (character=='0') Null++;
   (usw)
}

Gruß

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von justinh2407
13.03.2016, 14:56

Hab im Moment 4 Milliarden Stellen in ner Textdatei, vielen Dank :)

0
Kommentar von maximilianus7
13.03.2016, 15:39

kann ich nicht einfach so stehen lassen: an dem codesplitter ist ziemlich alles falsch. nur als warnung.

0

Was möchtest Du wissen?