[C con Clase] rand () y srand () en c

Diego bruceleechile en gmail.com
Mie Mayo 27 15:51:00 CEST 2009


De verdad muchas gracias a todos por contribuir a responder mi consulta ;), 
ahora ahi algo que escribio Steven Davidson, que no entendi la implementacion de este:

> Si no existe, entonces crea un array con todos los números que quieres y usa 
> 'rand()' para generar números enteros a modo de índice para seleccionar 
> cada número guardado en el array. Por ejemplo, 
>
>int array[5] = { 2,5,9,4,1 }; 
> valor_generado = array[ calcular_indice(5) ]; 
>donde, 
>
>int calcular_indice( int n ) 
>{ 
>   return (int)( rand()*(n/(RAND_MAX+1.0)) + 0.5 ); 
>}

No comprendo bien la implementacion de ésta, osea seria:

int calcular_indice (int n)
{
    return (int)( rand()*(n/(RAND_MAX+1.0)) + 0.5 );
}


int main ()
{
    int array[5] = { 2,5,9,4,1 }; 
    valor = array[ calcular_indice(5) ]; 
    return 0;
}

Bueno yo en windows con el Dev c++ probe este codigo:

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

int calcular_indice (int n)
{
    return (int)( rand()*(n/(RAND_MAX+1.0)) + 0.5 );
}

int main ()
{
    int array[5] = { 2,5,9,4,1 }; 
    int valor;
    valor = array[ calcular_indice(5) ]; 
    printf("%i \n", valor);
    system("pause");
    return 0;
}

Y siempre me arroja 2 xD!, comprendo que con calcular_indice(5) le estamos pasando el total de elementos del array a la funcion, pero siempre me arroja 2
Probe el mismo codigo en linux (ubuntu), logicamente sin el system("pause"); xD! y siempre me arroja 1 xD!, haber si alguien puede decirme por que me ocurre esto por favor

gracias


Más información sobre la lista de distribución Cconclase