phpbar.de logo

Mailinglisten-Archive

[php] Pseudozufallszahlen

[php] Pseudozufallszahlen

Wilfried Henseler w.henseler_(at)_snoopmedia.de
Thu, 31 Aug 2000 09:19:57 +0200


----- Original Message -----
From: "Alexander Ott" <A.Ott_(at)_bau-igel.de>
To: <php_(at)_php-center.de>
Sent: Wednesday, August 30, 2000 6:12 PM
Subject: Re: [php] Pseudozufallszahlen


> Wilfried Henseler schrieb:
> > ich moechte in PHP3(!) drei zufallszahlen aus dem bereich von 1-10
> > haben. Es darf aber keine doppelt vorkommen.
> >
> Einen Algorythmus zu finden, welcher 10 Zufallszahlen ausgibt
> macht per definition keinen Sinn, da die zehn Zahlen ja immer in
> der gleichen (wenn auch durcheinander) Reihenfolge wiedergegeben
> werden würden.

Nicht 10 Zufallszahlen, sondern 3 zufallszahlen zwischen 1 und 10,
die aber nicht doppelt sein duerfen.
Also 1,2,3 oder 5,1,7 oder 3,9,8 aber nicht 1,1,5... ;)

In meine fall waere es sogar wuenschenswert, dass das nicht wirklich
ein zufall ist.

Also der sinn der sache ist genauer der:
In einem shop sollen auf der eingangsseite 3 top-angebote
ausgegeben werden. Es koennen aber vom betreiber viel mehr als
nur 3 angebote dafuer vorgemerkt werden.
Darum sollen halt immer per zufall 3 verschiedene produkte aus
den moeglichen angezeigt werden.

Diese einfach mit einer wassermarke nach der reihe aus zu geben
waere auch nicht so schoen, weil in der datenbank hintereinander
stehende produkte zumeist sehr aehnlich sind und es mir lieber
waere i.d.r. eine "bunte mischung" zu haben.

> > Imho ging diese formel doch mathematisch so, dass die schleife
> > genau 64000 mal durchlaufen wurde und kein array gebraucht wurde
> > um sich zu merken welche pixel schon dran waren. Imho musste doch
> > nur der letzte pixel uebergeben werden.
> >
> Es gibt eine Lösung welche 10.000 Zufallszahlen (0,0000 bis 0,9999)
erzeugt:
>
> z(n+1) = Nachkommateil (z(n) * 1117 + 0,1117)
>
> In den von Dir erwähnten "guten alten Zeiten" kannte ich da noch mehrere
> davon, allerdings sind die in den letzten 20 Jahren aus meinem Gedächtnis
> verschwunden.

Jo, da gibt es auch diese form mit: X_n=(a *X_(n-1)+b) mod m

Aber ich erinnere mich einfach nicht mehr daran, wie das genau funktionierte
um eine schoene "mischung" bei n=3 zufallszahlen aus 1 bis Y.
Lang ists halt her :(

Und im web finde ich dazu leider nur hoch-mathematische ansaetze um
dann DOCH zufallszahlen zu erzeugen - aber, wie gesagt, genau darum
geht es mir ja eben nicht - weil keine doppelt sein darf.

> Aber wahrscheinlich outen wir uns hier beide mit diesem Thread als Opas ;)

Jo, naja, mein problem hab ich halt jetzt auf "die komplizierte" art
geloest -
war ja nicht schwer bei nur 3 zahlen - aber aergern tut es mich doch, dass
ich
weiss es ginge auch eleganter, aber nimmer wie ;(

--
Wilfried Henseler
snoopmedia GmbH
Schloßstr. 4, 53115 Bonn, Tel +49/228/2499683
http://www.snoopmedia.com






php::bar PHP Wiki   -   Listenarchive