Overhead de generar número aleatorio

Overhead de generar número aleatorio

de Santiago Lopez De Haro Grille -
Número de respuestas: 2

Buenas,

Con mi equipo estábamos viendo el ejercicio uno, y nos percatamos que generar números aleatorios es una operación bastante cara para la cpu, en particular al iterarlo tantas veces, al punto que sin leer el arreglo de forma aleatoria (Es decir igual leerlo de forma continua) para de 2 segundos a 8 segundos solo por la operación de número aleatorio, debido a esto quedan bastante manchados los datos debido a este overhead masivo que introduce la generación de aleatoriedad.

Lo que se nos ocurrió fue para la parte 1 generar los números aleatorios pero no usarlos, y comprar, pero no sé si era lo que se espera que hagamos.

Quedamos a la espera de una respuesta,

Saludos cordiales,

Santiago Lopez de Haro

En respuesta a Santiago Lopez De Haro Grille

Re: Overhead de generar número aleatorio

de Ernesto Dufrechou -
Hola Santiago,
es por eso que queremos que la siguiente posición a visitar en el arreglo se lea de otro arreglo previamente inicializado.
Por ejemplo tendrías un arreglo A y un arreglo ind.
En el primer caso inicializamos ind = {0,1,2,3,..} y luego reccorremos el otro arreglo así:
// registro tiempo inicio
for i = 0 : visitas
A[ind[i]]++;
// registro tiempo fin

En el segundo caso, primero generamos los números aletorios para inicializar el arreglo ind, sin medir el tiempo.
Luego hacemos la misma recorrida en A que antes (tomando el tiempo), pero ind va a tener posiciones aleatorias, así que vamos a saltar en A todo el tiempo...

En respuesta a Ernesto Dufrechou

Re: Overhead de generar número aleatorio

de Santiago Lopez De Haro Grille -
Muchas gracias por la respuesta rápida,

Claro nosotros estábamos inicializando los arreglos pero usando el commando "time" desde la terminal evaluando el tiempo total, medimos el tiempo del loop solamente entonces,

Saludos,