[C con Clase] Generar números al azar en una matriz
Steven Davidson
srd4121 en njit.edu
Vie Feb 26 16:20:20 CET 2010
Hola Cristian,
tACho XD Cristian Villota wrote:
> Hola a todos:
>
> Primero que todo gracias por su colaboración en mi inquietud
> anterior. Bueno mi problema es que tengo creada una matriz de
> [10][10] y necesito llenarla pero con números al azar, que cada vez
> que corra el programa me muestre diferentes números, no se si exista
Sí. Existen funciones para generar números enteros no negativos
pseudo-aleatoriamente. Te interesan las funciones estándares 'srand()' y
'rand()' declaradas en <cstdlib>.
Invoca 'srand()' una sola vez en tu programa. Esta función "implanta un
número semilla". Este valor inicial comienza la secuencia de valores
pseudo-aleatorios del algoritmo usado. Para obtener una aleatoriedad
"más aleatoria", tomamos la hora y fecha actual como el valor semilla.
Por ejemplo,
int main()
{
srand( time(NULL) );
...
}
La función estándar 'time()' está declarada en <ctime>.
Invocamos la función 'rand()', para conseguir números pseudo-aleatorios
entre 0 y 'RAND_MAX' (ambos valores incluidos). 'RAND_MAX' es una
constante simbólica definida en <cstdlib>.
Si quieres conseguir números en otros intervalos, cambia la escala. Por
ejemplo,
valor = 100 + (int)(1000*rand() / (RAND_MAX+1.0) + 0.5);
De esta manera, obtendremos números entre 100 y 1000 (ambos incluidos).
Sumamos 0.5 para realizar un redondeo.
Para más información acerca de estas funciones, sugiero que consultes la
referencia en nuestra página yendo a:
http://c.conclase.net/librerias/index.php?ansilib=stdlib#inicio
> una función para eso, y después copiar la primera fila en un vector
> de [10]. De antemano gracias por sus aportes.
>
Ten presente que el array que representa una matriz no es más que un
array de arrays. Para copiar los elementos de un array a otro, tendrás
que acceder a cada elemento y copiarlo a su homólogo. Por ejemplo,
int vector[10];
int matriz[10][10];
for( ... )
matriz[0][i] = vector[i];
La otra forma es usando la función estándar 'memcpy()', declarada en
<cstring>. Por ejemplo,
memcpy( matriz[0], vector, 10 * sizeof(int) );
Espero que esto te ayude.
Steven
Más información sobre la lista de distribución Cconclase