C/Visual C - Ayuda

 
Vista:

Ayuda

Publicado por Luis (1 intervención) el 14/12/2000 00:00:00
Hola a todos los amigos programadores, si me pudieran ayudar. Si se tiene un limite inferior(1) y superior(N) numerico y se busca otro numero x de tal manera que: 1 <= x <= N y x sea aleatorio, que algoritmo podria utilizar. De antemano muchas gracias y saludos!

Luis
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda

Publicado por Omar A. (4 intervenciones) el 15/12/2000 00:00:00
Espero te sirva este ejemplo

#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

// imprime un numero aleatorio desde 1 hasta n
void main(){
int n;
randomize();
cin>>n;
printf("Numero aleatorio: %d\n", random (n)+1);
getch();
}


Saludos
Omar A.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda

Publicado por Un Aprendiz (12 intervenciones) el 15/12/2000 00:00:00
Creo que te refieres a la busqueda binaria (dado que dices que se busca un numero x);
esta funcion realiza dicha tarea.
Donde cont es el numero de elementos, *lista un puntero a la lista ORDENADA de todos
los valores y clave el valor x a buscar.
La lista debe estar ordenada, es TOTALMENTE INDISPENSABLE. El numero maximo de
comparaciones (en el peor caso) es bastante menor que en la busqueda secuencial
(log2n (busqueda binaria) frente a n (secuencial)), pero repito (y no me cansare)
que la lista debe estar ordenada. Como observaras el algoritmo es simple e inteligible.

int busqueda_binaria ( int *lista , int cont , int clave )
{
int bajo,alto,medio;

bajo=0;
alto=cont-1;

while(bajo<=alto)
{
medio = (bajo+alto)/2;

if (clave < lista[medio]) alto = medio-1;
else if (clave > lista[medio]) bajo = medio+1;
else return medio; /* encontrado */
}

return -1; /* No encontrado */
}

Espero que fuera esta tu pregunta; si no lo era, siento el espacio ocupado.
Saludos
Un Aprendiz
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda

Publicado por Pablín (2 intervenciones) el 27/12/2000 00:00:00
bastaria con hacer el modulo de la división por la cota superior....
x = rand()%N;
ojo que rand() devuelve un nro < a 32768 por lo que si N>32768 la distribución no sería uniforme
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar