Pi mit PhP

Ist nicht sonderlich hilfreich. Möchte ungern größere Skripte anderer einbauen wenn nicht unbedingt notwendig.
Ist es nicht schneller pi einfach in einem file nachzuschlagen
Vermutlich ist es das. Nur kann ich schlecht abschätzen wie viele stellen ich benötige. Aber das wäre eine sehr einfache Lösung.

Ist relativ schnell für bounded Nachkommastellenberechnung, aber immernoch vergleichsweise langsam.
Ich verstehe nicht ganz wie ich mit der Formel auf einzelne stellen kommen soll. Das ganze bildet einen Recht abweichenden Grenzwert auf den letzten paar Stellen, mir wäre es ganz gern würde ich schön die richtige Zahl an der richtigen Stelle haben, aber halt nur x stellen lang und dann kommt nichts mehr. Ähnlich wie es jetzt läuft.

Vermutlich dauert das mit Pi aber alles eh immer lange. Evtl geht das mit anderen irrationalen Zahlen schneller?
 
Du willst ein Stream von immer gleichen Zufallszahlen. Wie wäre es mit einer Verschlüsselung einer bekannten Zahlenfolge (z.B. von 00000000) mit einem festen Key. Geschwindigkeit liegt bei AES im GB/s Bereich. Versteif dich nicht so auf die irrationalen Zahlen. Das ist eine mathematische Spielerei.
 
Cmprinho schrieb:
Lass dir die Stellen einmal ausrechnet und besorg dir dann Die gewünschte Länge x einfach aus dem file.

Horstexplorer schrieb:
Vermutlich ist es das. Nur kann ich schlecht abschätzen wie viele stellen ich benötige. Aber das wäre eine sehr einfache Lösung.

Das verstehe ich jetzt nicht? Pi ist doch immer der selbe Wert, es sind immer die selben Nachkommastellen bis zu der bestimmten Länge. Und die Anzahl der Stellen soll doch bekannt sein, die soll doch als Parameter dienen? Und ob Du die Stellen nun berechnest oder einfach nachschaust, es werden immer die gleichen sein.
 
Zuletzt bearbeitet:
Genau, ich weiß halt nur nicht wirklich wie meine bestimmte Länge aussieht. Oder zumindest nicht ohne das ich das Mal nachrechne.
Ich kuck mal wie ich das machen kann, habe das gerade Mal getestet. Es dauert deutlich länger je mehr stellen ich rausrechnen will. 4s-10k 10s-20k 60s-50k.
So oder so ist das zu lang.
Ich kucke mal wie ich das geschickt umsetzen könnte.
 
Sobald es hier um Zahlen geht, wird aber schon eine ganze Menge Halbwissen abgegeben. Prime95 berechnet nicht Pi, sondern prüft für eine spezielle Art von Zahlen, ob sie prim sind -- nämlich sogenannte Mersenne-Primzahlen, daher auch der Name Prime.

Warum muss es denn Pi sein? Ich habe schonmal gesagt, dass Du auch irgendeine andere irrationale Zahl nehmen kannst, das sind zum Beispiel Wurzeln von ganzen Zahlen (und das können nur dann rationale Zahlen sein, wenn die Wurzel schon ganz ist, wie zum Beispiel bei 4 und 2. Gute Kandidaten sind daher Primzahlen (natürlich außer 2), die haben immer irrationale Wurzeln). Für die gibt es das sogenannte Heronverfahren, das vergleichsweise schnell konvergiert. Du musst aber natürlich auch sicherstellen, dass Du die ganzen Nachkommastellen wegspeichern kannst, ich weiß nicht wie PHP in sowas macht.
 
Das mit einer irrationalen Zahl aus einer Primzahl klingt nicht schlecht. Wie viele Nachkommastellen funktionieren weiß ich leider nicht ganz. Gibt es nicht die Möglichkeit jede Stelle einzeln zu berechnen um das ganze immer hinten an einen String drann zu hängen?
 
Weiß ich nicht, vielleicht über Differenzen der Folgenglieder -- aber dann müsstest Du auch ziffernweise vergleichen, ich weiß nicht wie gut das geht und wie wirtschaftlich das ist. Wie lang soll denn Dein Seed sein? Mit Maschinengenauigkeit musst Du dann auch aufpassen.
 
Ich bin gerade leider nicht sicher welchen Seed du meinst. Die Länge der Strings mit denen in dem Ergebnis gesucht wird sind n*5-6Stellig. Raus kommen sollen dann 8x8er Blöcke Zusammengesetz zu >=64.
 
Horstexplorer schrieb:
Gibt es nicht die Möglichkeit jede Stelle einzeln zu berechnen um das ganze immer hinten an einen String drann zu hängen?
Nein, weil dann wäre es keine irrationale Zahl.

​Allerdings gibt es Pseudofunktionen, die dafür besser geeignet sind. Was du machen willst, ist einfach beschissene Crypto. (Nicht nur schlecht, sondern auch langsam.) Tut mir leid, wenn das hart klingt, aber es ist nun mal die Wahrheit. Schlag dir dieses irrationale Zahlen Zeug aus dem Kopf, wenn du Krypto machen willst, weil jegliche (mathematische) Motivation dafür fehlt (du machst ja kein RSA (wofür man Primzahlen braucht)).
 
Liegen die Skripte alle auf dem gleichen Server? Falls ja, ergibt das überhaupt keinen Sinn was du hier machen willst.
Falls nein: Wie wäre es mit OAuth und deinen eigenen Authorization Server?
 
Hancock schrieb:
Nein, weil dann wäre es keine irrationale Zahl.

Türlich kannst de beliebige Stellen von irrrationalen Zahlen ausrechnen, ohne alle vorherigen zu kennen. Es ist zwar nicht für jede irrationale Zahl eine Formel dazu möglich (weil es mehr irrationale Zahlen gibt als es algebraische Ausdrücke gibt), aber zumindest für Pi gibt es die oben genannte Spigot-Formel und mir kam noch spontan die Liouville-Konstante in den Sinn, die nicht nur irrational, sondern sogar transzendental ist, und für die das berechnen einer beliebigen Nachkommastelle geradezu trivial ist.
 
Hancock schrieb:
Ok, falsch formuliert. Ich meinte mit konstantem Rechenaufwand (Zeit/Speicher).
Wenn du nur konstanten Rechenaufwand gelten lässt, ist plötzlich fast die ganze Informatik unmöglich geworden.
Mit einer extrem simplen Implementierung kann ich für die Liouville-Zahl auf steinalter Hardware in weit unter einer Sekunde die milliardenste Stelle bekommen.

Code:
demoncore@korova ~/src $ cat louie.c; time ./louie 1000000000
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
        int pos = 1;
        int div = 1;

        if(argc > 1) {
                pos = atoi(argv[1]);
                if(pos < 1)
                        pos = 1;
        }

        while((pos > 0) && (pos % div == 0))
                pos /= div++;

        printf("%d", pos == 1 ? 1 : 0);

        return EXIT_SUCCESS;
}
0
real    0m0.003s
user    0m0.000s
sys     0m0.000s
 
Alles andere als konstanter Rechenaufwand ist in (symmetrischer) Krypto sau gefährlich. Einfach ist es auf aktueller Hardware nicht, aber möglich.

​Und dein Liouville-Rechner funktioniert richtig schnell, solange die Stelle als integer dargestellt werden kann. Division ist sonst aber relativ teuer. Auch hast du jetzt exakt ein Bit, wir brauchen aber i.d.R. so um die 64 (mindestens). 3 ms*64 = 192 ms, was ich schon für ordentlich lange halte.

Nehm ich AES hab ich 2^128 Eingangskombinationen, die mir jeweils 128 Bit geben, dafür habe ich konstante (kurze) Laufzeit und sogar noch die Möglichkeit, ein Schlüssel festzulegen.
 
Zurück
Oben