Oktatás * Programozás 2 * Szkriptnyelvek * levelezősök Félévek Linkek * kalendárium |
C /
tömb feltöltése random számokkal
1) Feltöltés ugyanazokkal a random számokkalHa a véletlenszámok generálásánál ugyanazt a seed értéket használjuk, akkor a véletlenszámokat ugyanabban a sorrendben kapjuk. #include <stdio.h> #include <stdlib.h> #include <string.h> void show(int tomb[], int meret) { int i; for (i = 0; i < meret; ++i) { printf("%d ", tomb[i]); } printf("\n"); } int main() { int tomb[10]; int meret = 10; int i; for (i=0; i<meret; ++i) { tomb[i] = (int)(random() % meret + 1); } show(tomb, meret); return 0; } Itt a tömb mérete 10, s 1 és 10 közötti random egészekkel töltjük fel. Futási eredmény: $ ./random 4 7 8 6 4 6 7 3 10 2 $ ./random 4 7 8 6 4 6 7 3 10 2 2) Feltöltés eltérő random számokkalHa minden egyes futtatáskor más-más random számsorozatot akarunk kapni, akkor a véletlenszám-generátort "meg kell kavarni", vagyis minden egyes indításkor eltérő seed értékkel kell inicializálni. int main() { int tomb[10]; int meret = 10; int i; srand(time(NULL)); // extra sor for (i=0; i<meret; ++i) { tomb[i] = (int)(random() % meret + 1); } show(tomb, meret); return 0; } Itt a seed értékül szolgáló idő másodperc alapú. Vagyis ha a programot egy másodpercen belül 2x indítjuk el, akkor még mindig ugyanazokat a random számokat fogja előállítani. 3) Feltöltés tényleg eltérő random számokkalAzt kell elérni, hogy minden indítás esetén más-más seed értékkel inicializáljuk a random számok generátorát. Például az előző időhöz adjuk még hozzá az adott processz PID-jét (ez garantáltan egyedi érték lesz az adott gépen). Így még ha gyorsan is indítjuk el egymás után a programot (egy mp.-en belül), a PID miatt a seed érték eltérő lesz. srand(time(NULL) + getpid()); |
Blogjaim, hobbi projektjeim * The Ubuntu Incident [ edit ] |