pseudo - zufallszahlen
-
hi,
ich brauche ne zufallsfunktion zufall( a1, a2, ... , an ), die mir zu jedem vektor a ne zufallszahl erzeugt. (immer die gleiche ).
für n=1 isses noch kein problem, einfach "return (a1 * GROSSE_ZAHL_1 + GROSSE ZAHL_2) % NICHT_SO_GROSSE_ZAHL;".
sieht auch ok aus.
aber schon für n=2 kommt oft ein farbverlaufoder muster
anstatt einer zufallsverteilung. und ich habe keine lust, ewig rumzuprobieren...
bin dankbar für nützliche tipps.
-
int myRandom(int nr) { srand(nr); return rand(); }
Gell?
-
das ist natürlich toll.
aber was soll ich bei 2 oder mehr argumenten angeben?
srand(x+y)?
srand(x*y)
-
x+y wäre sicher nicht so clever, bei z.B. x=1;y=3 und x=2;y=2 usw. hast Du da Probleme.
xy klingt doch super (ausser wenn x,y auch null sein können.
Falls es ein xmax oder ymax gibt versuch doch: (yxmax)+x o.ä.
-
Wie wäre ein:
(x ? x : 214) * (y ? y : 5444)
-
xy ist natürlich symmetrisch.
ich hab jetzt *tadaaa*:
(10+(x+1)(186 + (y+4)(5348+(1+x)(568*(5+y)*(1+x)))))aber wenn man die werte ein bisschen ändert, kriegt man wieder muster. also eher suboptimal.
-
Ich würde einfach mal nach einer Hashfunktion für Strings googeln. Falls dein Vektor nur eine (Multi-)Menge darstellt kannst du ja einfach vorher sortieren.