Crear numero aleatorios en C:
Para obtener un numero aleatorio, tengo
una funcion que se llama rand(), comprendido
entre 0 y una constante llama RAND_MAX. Cuando llamas la función
rand() devuelve un numero “aparentemente” aleatorio, calculado a
partir de un punto de partida que sino lo indicamos es el 1. Si parte
siempre del mismo sitio (1), siempre muentra los mismos numeros.
Lo
que tenemos es que indicar un numero diferente de partida (o
semilla).
Existe
una funcion llamada srand(int),
que nos da ese numero de partida (solo hay que indicarlo una vez en
el programa).
El
valor de inicio de srand(),
debe de ser distinto cada vez que inicio nuestro programa. Para
aprovechamos que cada vez que ejecutamos el programa el tiempo es
distinto . Eso lo asemos con la función time(NULL).
(que da la cantidad de segundos ocurrido desde el 1 de enero de
1970).
Ficheros de
Cabeceras .h
C
tiene 32 palabras reservedas, pero tienes miles de funciones.
Los
ficheros de cabeceras .h, contiene esas funciones , y al
incluirlo al principio del programa le decimos donde el compilador
tiene que buscarlas. Por ejemplo:
#include
<stdio.h>
Nota:
Secciones de
man: $man man
1
Programas ejecutables y guiones del intérprete de órdenes
2
Llamadas del sistema (funciones servidas por el núcleo)
3
Llamadas de la biblioteca (funciones contenidas en las bibliotecas del sistema)
4
Ficheros especiales (se encuentran generalmente en /dev)
5
Formato de ficheros y convenios p.ej. I/etc/passwd
6
Juegos
7
Paquetes de macros y convenios p.ej. man(7), groff(7).
8
Órdenes de admistración del sistema (generalmente solo son para
root)
9
Rutinas del núcleo [No es estándar]
n
nuevo [obsoleto]
l
local [obsoleto]
p
público [obsoleto]
o
viejo [obsoleto]
Ejemplo:
$man
2 time
$man
3 time
nos
informa de las ordenes
Por
lo tanto el inicio del programa en C deberiamos añadir esas
biblioteca (nota: no incluir todas las bibliotecas ya que el programa
se haria inmenso y encima no las utilizariaos, solo poner las que nos
falte..)
#include
<time.h>
// para el time()
#include
<stdlib.h>
// para el srand()
Para
inciar el srand:
srand(time(NULL));
Para
inciar la funcion:
Si
Ud. quiere generar un entero aleatorio entre 1 y 10, siempre
(ambos
incluidos)
debería hacerlo usando los bits de
orden alto como en:
j=1+(int)
(10.0*rand()/(RAND_MAX+1.0));
Si
es para 5 al 100: (intervalor del 5 al 100=95
valores)
j=5+(int)
(95.0*rand()/(RAND_MAX+1.0))
Pseudocodigo
|
C
|
num=aleatorio(1,100) |
0) Incluir las ficheros de encabezados:
#include
<time.h>
// para el time()
#include
<stdlib.h>
// para el srand()
1) srand(time(NULL)); //iniciar la funcion srand() con la semilla time(NULL) 2) num=1+(int) (100.0*rand()/(RAND_MAX+1.0)); |
num=aleatorio(5,100) |
0) Incluir las ficheros de encabezados:
#include
<time.h>
// para el time()
#include
<stdlib.h>
// para el srand()
1) srand(time(NULL)); //iniciar la funcion srand() con la semilla time(NULL) 2) num=1+(int) (95.0*rand()/(RAND_MAX+1.0)); |
No hay comentarios:
Publicar un comentario