Foros del Web » Programación para mayores de 30 ;) » Programación General »

como hacer valor aleatorio en c

Estas en el tema de como hacer valor aleatorio en c en el foro de Programación General en Foros del Web. soy principiante en c i quisiera saber como hacer un valor aleatorio?...
  #1 (permalink)  
Antiguo 28/04/2005, 20:40
Avatar de skarte  
Fecha de Ingreso: enero-2005
Mensajes: 26
Antigüedad: 19 años, 3 meses
Puntos: 0
Pregunta como hacer valor aleatorio en c

soy principiante en c i quisiera saber como hacer un valor aleatorio?
__________________
Skart.... :cool:
  #2 (permalink)  
Antiguo 28/04/2005, 20:59
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Usa la funcion rand(). Se encuentra en stdlib.h y regresa una valor semialeatorio.

Tambien hay otras funciones como s_rand y cosas asi que se basan en un numero para regresar el numero aleatorio.

saludos
  #3 (permalink)  
Antiguo 28/04/2005, 23:23
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por Instru
Usa la funcion rand(). Se encuentra en stdlib.h y regresa una valor semialeatorio.

Tambien hay otras funciones como s_rand y cosas asi que se basan en un numero para regresar el numero aleatorio.

saludos
Te lo aclaro.

rand() devuelve un número "aleatorio" que te es suficiente para los programas que quieras hacer. El problema es que, como tal función, siempre devolverá la misma secuencia de números. Para cambiar el número inicial (llamado semilla), se usa la función srand(). Ahora pensarás, pues uso srand(rand()) para hacerlo. No, porque siempre devolvería el mismo número. Para conseguir números aleatorios lo mejor es usar la fecha del sistema para conseguirlos, ya que varía cada segundo. Aquí te dejo el ejemplo:

Código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int alea(int desde, int hasta)
{
	return rand()%(hasta-desde+1)+desde;
}

int main()
{
	int i;

	/* Conseguimos una semilla con la fecha */
	srand(time(NULL));

	/* Usamos la función para obtener números */
	for(i=0;i<10;i++)
	{
		printf("%i\n",alea(1,100));
	}

	return 0;
}
Esa función te simplifica el uso de rand() para que devuelva números entre un rango.

Prueba el programa, Instru, y verás lo importante que es el "s_rand".
  #4 (permalink)  
Antiguo 29/04/2005, 14:36
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Bueno, lo que por lo general hacia era usar rand y el operador %. Entonces si queria una numero aleatorio que fuera hasta 600 usba rand()%601 y listo, nunca me fallo, me dio numeros aleatorios bien, pero de todos modos voy a intentar lo nueva forma ya que podria servir tambien.

Saludos
  #5 (permalink)  
Antiguo 29/04/2005, 15:43
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por Instru
Bueno, lo que por lo general hacia era usar rand y el operador %. Entonces si queria una numero aleatorio que fuera hasta 600 usba rand()%601 y listo, nunca me fallo, me dio numeros aleatorios bien, pero de todos modos voy a intentar lo nueva forma ya que podria servir tambien.

Saludos
Sí, pero los números aleatorios serían la misma secuencia. Compruébalo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:09.