Debe llamar a srand() antes de llamar a rand para inicializar el generador de números aleatorios.
o bien llamarlo con una semilla específica, y siempre obtendrá la misma secuencia pseudo-aleatoria
#include <stdlib.h>
int main()
{
srand (123);
int random_number = rand();
return 0;
}
o llamarlo con un cambio de las fuentes, es decir, la función de tiempo
#include <stdlib.h>
#include <time.h>
int main()
{
srand (time(NULL));
int random_number = rand();
return 0;
}
En respuesta al comentario de Moon rand() genera un número aleatorio con una probabilidad igual entre 0 y RAND_MAX (una macro predefinida en stdlib.h)
Puede asignar este valor a un rango menor, p. Ej.
int random_value = rand(); //between 0 and RAND_MAX
//you can mod the result
int N = 33;
int rand_capped = random_value % N; //between 0 and 32
int S = 50;
int rand_range = rand_capped + S; //between 50 and 82
//you can convert it to a float
float unit_random = random_value/(float) RAND_MAX; //between 0 and 1 (floating point)
Esto podría ser suficiente para la mayoría de usos, pero vale la pena señalar que en el primer caso se utiliza el operador mod introduce un ligero sesgo si N no se divide uniformemente en RAND_MAX + 1.
Los generadores de números aleatorios son interesantes y complejos, se dice que el generador rand() en la biblioteca estándar C no es un generador de números aleatorios de gran calidad, lea (http://en.wikipedia.org/wiki/Random_number_generation para una definición de calidad).
http://en.wikipedia.org/wiki/Mersenne_twister (fuente http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html) es una alta calidad generador de números aleatorios popular.
Además, no tengo conocimiento de arc4rand() o al azar() por lo que no puedo hacer ningún comentario.
try 'rand() * 10' – deostroll