Sari la conținut
VrînceanAlex.lüxor

[C/C++] Standard#10 ~ Random.

Recommended Posts

Medota de a afisa un numar random in C intre MIN si MAX inclusiv:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MIN 5
#define MAX 10
  
int main()
{
	srand(time(NULL));
	int i = 0;
	while(i++ < 10) {
		int r = (rand() % (MAX + 1 - MIN)) + MIN;
		printf("%d\n",r);
	}
	return 0;
}

Medota de a afisa un numar random in C++ intre MIN si MAX inclusiv:

#include <iostream>
#include <cstdlib>
#include <ctime>

#define MIN 5
#define MAX 10
  
int main()
{
	srand(time(NULL));
	int i = 0;
	while(i++ < 10) {
		std::cout << (rand() % (MAX + 1 - MIN)) + MIN << '\n';
	}
	return 0;
}

Cum functioneaza :

rand() - Genereaza un numar pseudo-random, adica calculatorul nu e in stare sa creeze un numar random insa pe baza unor calcule matematice va reusi sa dea mereu alt rezultat.

time(NULL) - functia time returneaza timpul actual inapoi. (okay, practic procedeul este mai complicat... iar explicatia nu are rost in momentul actual). NULL poate fi interpretat ca si 0, el este pointerul ce pointeaza la adresa 0 : (void*)0 - vom vorbi despre astea mai tarziu, momentan sa ramanem la ideea ca time(NULL) - returneaza timpul actual.

srand(seed) - Primeste un numar dupa care calculeaza valorile random. prin rand(), seed fiind strict pozitiv.

 

Practic noi facem in felul urmator : setam ca seed timpul actual (mereu va fi un altul, timpul nu sta in loc) iar apoi doar folosim rand() rand() rand() pana nu mai vrem.

Insa rand() ne ofera numere imense, iar noi va trebui sa le controlam... cum facem asta ? ei bine avem o metoda matematica interesanta :

(rand() % (MAX + 1 - MIN)) + MIN // stabilim ca MIN sa fie 5 si MAX 10, ca de exemplu

orice numar primim (sa zicem 9999) daca efecuam operatia acesta se va afla in intervalul nostru, haida sa vedem

(9999 % (10+1-5))+5 =

(9999 % 6) + 5 =

3 + 5 = 8 // care se afla in interval

 

daca rand() dadea alte valori sa vedem ce iesea :

9998 -> 7

10000 -> 9

10001 -> 10

10002 -> 5 (10002 % 6 este 0, iar 0+5 este 5)

 

 

 

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum

×