Wartościami losowymi w C/C++ zajmuje się m.in. wbudowany generator liczb pseudolosowych. Aby go użyć należy upewnić się, że dołączamy bibliotekę cstdlib lub po prostu iostream.

Generator losuje liczby z zakresu od 0 do RAND_MAX, który to literał jest zdefiniowany w bibliotece cstdlib. Najprostszy program pokazujący użycie generatora pokazany jest poniżej:

#include <cstdlib>
#include <cstdio>

int main() {
	int licz=rand();
 	printf("Wylosowana liczba to %d",licz);	
 	
 	return 0;
}
  

Kilkukrotne uruchomienie powyższego programu zdradza, że coś jest nie tak – zawsze program podaje tę samą liczbę. Wiąże się to z faktem, iż generator “losując” wartość korzysta z algorytmu, który zwraca serię danych rozpoczynającą się od jednego punktu startu. Powoduje to, że aby móc losować losowe wartości musimy użyć losowego punktu startu, aby miało to sens (chociaż to zdanie wydaje się nie mieć sensu). Aby to zrobić, musimy uruchomić generator poprzez podanie tzw. seed’a – czyli losowo wybranej wartości z jaką rozpocznie się generowanie serii danych. Taka operacja jest możliwa w powiązaniu np. z czasem komputera – przy każdym uruchomieniu ów czas będzie zawsze inny. Do tego potrzebujemy dodatkowej biblioteki ctime. Można to zrobić w sposób poniżej zaprezentowany:

#include <cstdlib>
#include <cstdio>
#include <ctime>

int main() {
  	srand(time(0));
	int licz=rand();
 	printf("Wylosowana liczba to %d",licz);	
 	
 	return 0;
 }
 

Teraz już widać, że wartości wydają się być losowe.

Wiemy już, że losowane wartości są z zakresu od 0 do RAND_MAX, co często jest nieadekwatne do naszych potrzeb. Poniżej kilka przykładów jak zmienić zakres losowanych zmiennych:

#include <cstdlib>
#include <cstdio>
#include <ctime>

int main() {
	srand(time(0));

	puts("Losowe 10 liter z alfabetu");
 	for (int i=0;i<10;i++) printf("%5c",((rand()%('Z'-'A'))+'A'));
	 
	puts("Wartość od 1 do 10");
 	printf("%5d",rand()%10+1); 

	puts("Parzysta liczba od 0 do 100");
 	printf("%5d",rand()%51*2);
 	
 	return 0;
 }

Używając tego generatora i szybko uruchamiając raz po raz po sobie aplikację nie sposób nie dostrzec prawidłowości w generowanych liczbach (zauważyliście jakie?).

Dla języka C/C++ istnieją przez to biblioteki o wydajniejszych (bardziej losowych) generatorach – np. biblioteka random.