Recent Changes - Search:

Oktatás

* Programozás 2
  + feladatsor
  + C feladatsor
  + Python feladatsor
  + GitHub oldal

* Szkriptnyelvek
  + feladatsor
  + quick link

* levelezősök
  + Adator. prog.
  + feladatsor
  + quick link

teaching assets


Félévek

* 2024/25/1
* archívum


Linkek

* kalendárium
   - munkaszüneti napok '20
* tételsorok
* jegyzetek
* szakdolgozat / PhD
* ösztöndíjak
* certificates
* C lang.
* C++
* C#
* Clojure
* D lang.
* Java
* Nim
* Scala


[ edit | logout ]
[ sandbox | passwd ]

C /

tömb feltöltése random számokkal

#############################

1) Feltöltés ugyanazokkal a random számokkal

Ha 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ámokkal

Ha 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ámokkal

Azt 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());
Cloud City

  

Blogjaim, hobbi projektjeim

* The Ubuntu Incident
* Python Adventures
* @GitHub
* heroku
* extra
* haladó Python
* YouTube listák


Debrecen | la France


[ edit ]

Edit - History - Print *** Report - Recent Changes - Search
Page last modified on 2015 March 17, 16:18