[C con Clase] numeros aleatorios

Steven Richard Davidson stevenrichard.davidson en gmail.com
Vie Ago 31 06:48:26 CEST 2007


Hola Germán,

On 8/30/07, German Ponce <german.informatico en gmail.com> wrote:
> holas me encargaron hacer numeros aleatorios para probar determinados
> algoritmos y no se como hacerlo ¿podrian ayudarme? le estare nuy agradecido,
> escuche acerca de randomize()  pero no me funciona, asi que si tiene alguna
> libreria para esta funcion tambien me seria de gran ayuda, ademas debe
> funcionar en c o c++ gnu
>

La función, o mejor dicho, la macro 'randomize()' no es estándar. Por
esta razón, no te funcionará bajo todos los compiladores. Algunos
compiladores de MS-DOS, en particular  los de Borland, implementaban
las macros: 'randomize()' y 'random()'.

Las funcions estándares son 'srand()' y 'rand()', ambas declaradas en
<stdlib.h> (o <cstdlib> en C++). Invocamos 'srand()' una sola vez, al
principio de nuestro programa. Esta función sirve para "plantar el
valor semilla"; en otras palabras, sirve para comenzar el generador de
números pseudo-aleatorios. Típicamente, tomamos la hora del reloj del
sistema como el valor inicial invocando 'time()'. Por ejemplo,

int main()
{
  srand( time(NULL) );
  ...
}

Para conseguir cada número pseudo-aleatorios generado, invocamos
'rand()'. Por ejemplo,

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

  for( int i=1; i<=10; i++ )
    cout << rand() << endl;

  return 0;
}

Este programa mostrará 10 números enteros entre 0 y 'RAND_MAX', una
constante definida en <cstdlib>.

Las macros 'randomize()' y 'random()' fueron definidas de la siguiente manera:

#define randomize() srand((unsigned)time(NULL))
#define random(num) (int)(((long)rand()*(num))/(RAND_MAX+1))

Puedes consultar la referencia de las funciones estándares yendo a
nuestra página. Puedes ir directamente a:
http://c.conclase.net/librerias/libreria.php?lib=stdlib


Espero haber aclarado el tema.

Steven




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