Hier holst du schon eine Zufallszahl mit mt_rand() ab und wendest ein paar konstante Funktionen drauf an (wozu auch immer...), da kannst du ja auch gleich die Zufallszahl verwenden...
Zufallszahl (n=0) = floor(($random + pi)^8) ((Edit: richtig: ($random + pi)^8))
Zeile 8 ändert nur den Seed auf eine andere Zahl, die wieder von $random abhängt (falls die Funktion nicht ohnehin oben $Seed aus einer Zufallszahl nehmen würde)
Zufallszahl (n) = floor((Zufallszahl(n-1) - floor(Zufallszahl(n-1)) + pi)^8) ((Edit: richtig: (Zufallszahl(n-1) - floor(Zufallszahl(n-1)) + pi)^8))
Im Endeffekt muss man trotzdem die erste Zufallszahl zufällig wählen, sonst hat man erst wieder die komplett gleiche Zahlenfolge
Achja:
Zeile 8 scheint auch nicht allzu großartig zu funktionieren, siehe (mit Seed = 1):
http://www.wolframalpha.com/input/?i=+f%280%29%3Dfloor%28%281%2Bpi%29^8%29%2C+f%28n%29%3Dfloor%28%28f%28n-1%29-floor%28f%28n-1%29%29%2Bpi%29^8%29
Die Funktion läuft nur mehr statisch nach dem ersten Seedwechsel, kann aber auch sein, dass ich mich verschrieben/vertan habe.
(Edit:
Ja, ich habe Mist gebaut - da oben sind 2 floor-Funktionen zu viel (die werden ja nur bei der Ausgabe verwendet!
Hier der korrekte Plot etc.:
http://www.wolframalpha.com/input/?i=+f%280%29%3D%281%2Bpi%29^8%2C+f%28n%29%3D%28f%28n-1%29-floor%28f%28n-1%29%29%2Bpi%29^8
)
Die Lösung wird wohl sein, irgendwelche anderen externen Parameter zu finden, die nicht statisch sind: Benutzereingabe, Uhrzeit, Prozessid, Speicherbereich in dem das Programm liegt... und mit dem dann eine beliebige Folge zu seeden, die möglichst zufällig verläuft.
Falls du Zeit selbst nicht abfragen darfst könntest du versuchen, Code (z.B. eine Fibonaccifolge) eine gewisse fixe Zeit laufen zu lassen (k.A. ob das mit Java leicht möglich ist), dabei sollte je nach Computerlast auch nicht immer das gleiche Ergebnis geliefert werden.