Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Número Aleatorio que esté dentro de la misma fila o columna

Estas en el tema de Número Aleatorio que esté dentro de la misma fila o columna en el foro de C/C++ en Foros del Web. Hola a todos ! Tengo una duda que consiste en que tengo que mostrar un número aleatorio que esté dentro de la misma fila o ...
  #1 (permalink)  
Antiguo 04/11/2014, 10:33
Avatar de anggiebs  
Fecha de Ingreso: julio-2014
Ubicación: Madrid
Mensajes: 35
Antigüedad: 10 años, 4 meses
Puntos: 0
Pregunta Número Aleatorio que esté dentro de la misma fila o columna

Hola a todos !
Tengo una duda que consiste en que tengo que mostrar un número aleatorio que esté dentro de la misma fila o columna del número introducido por el usuario.
Por ejemplo ,si el usuario ha introducido el número 2 ,me debe devolver un número aleatorio entre 1,3,5 u 8.
He estado pensando pero por el momento no se me ocurre qué hacer :/

El número que me debe devolver está basado en esto:

fila 2 : 7 8 9
fila 1 : 4 5 6
fila 0: 1 2 3

columna: 0 1 2

Gracias de antemano :)!
  #2 (permalink)  
Antiguo 04/11/2014, 10:52
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 1 mes
Puntos: 204
Respuesta: Número Aleatorio que esté dentro de la misma fila o columna

Crea una lista en la que copies todos los valores posibles. Este vector tendrá N elementos.

Después calcula un número aleatorio entre 0..N-1. Este número lo usas de índice para obtener, aleatoriamente, un número de entre los elegibles.
  #3 (permalink)  
Antiguo 04/11/2014, 11:02
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 18 años, 4 meses
Puntos: 32
Respuesta: Número Aleatorio que esté dentro de la misma fila o columna

Debes concretar tus dudas.

Dada una matriz n x m y una posición (i,j) donde i es la fila y j es la columna:

Una solución sería:
1) Obtener los valores de la matriz que estén en la fila i y columna j sin contar el elemento (i,j) y guardarlos en un array.
2) Dado el array que tendrá una longitud x, eliges un entero k aleatorio entre 0 y x-1.
3) El k-simo valor del array será el número aleatorio que necesitas.

Hay otras maneras sin uso de un array intemediario. Pero esta me parece la más intuitiva. ¿En que te estancas?

Un saludo!
__________________
github.com/xgbuils | npm/xgbuils
  #4 (permalink)  
Antiguo 04/11/2014, 12:28
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años, 6 meses
Puntos: 49
Respuesta: Número Aleatorio que esté dentro de la misma fila o columna

Cita:
Iniciado por Pantaláimon Ver Mensaje
Debes concretar tus dudas.
.................................................. ....
Hay otras maneras sin uso de un array intemediario
.......................................
Un saludo!
Con esta idea, sin array intermedio:

Código C++:
Ver original
  1. /** "2" posicion en la matriz (0,1) **/
  2.   int iBuscar = 0 , jBuscar = 1 , aleatorio ;
  3.   aleatorio = rand ( ) % 2 ;
  4.   i = iBuscar , j = jBuscar ;
  5.   if ( aleatorio == 0 )
  6.     while ( ( i = rand ( ) % N ) ==  iBuscar ) ;
  7.   if ( aleatorio == 1 )
  8.     while ( ( j = rand ( ) % N ) ==  jBuscar ) ;
  9.   printf ( "\n\n%d\n" , num [ i ][ j ] ) ;

¡¡¡Saluditos!!!

  #5 (permalink)  
Antiguo 04/11/2014, 15:13
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 18 años, 4 meses
Puntos: 32
Respuesta: Número Aleatorio que esté dentro de la misma fila o columna

Supongamos que la matriz es M x N. Por poner un ejemplo: 2 filas x 400 columnas. Con ese algoritmo hay un 50 % de que salga un número y otro 50% de que salgan los 399 restantes. No existe una probabilidad proporcional. Aunque anggiebs tampoco lo requirió.

¿Habrá un algoritmo sin array intermediario y con probabilidad proporcional?
__________________
github.com/xgbuils | npm/xgbuils
  #6 (permalink)  
Antiguo 04/11/2014, 15:50
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años, 6 meses
Puntos: 49
Respuesta: Número Aleatorio que esté dentro de la misma fila o columna

Cita:
Iniciado por Pantaláimon Ver Mensaje
Supongamos que la matriz es M x N. Por poner un ejemplo: 2 filas x 400 columnas. Con ese algoritmo hay un 50 % de que salga un número y otro 50% de que salgan los 399 restantes. No existe una probabilidad proporcional. Aunque anggiebs tampoco lo requirió.

¿Habrá un algoritmo sin array intermediario y con probabilidad proporcional?
Algo próximo a ello podría ser:

Código C++:
Ver original
  1. /*****************/
  2.  
  3. #define  N 3
  4. #define  M 100
  5.  
  6. /************************************/
  7.  
  8.   int iBuscar = 0 , jBuscar = 1 , aleatorio ;
  9.   aleatorio = rand ( ) % ( N + M ) ;
  10.   i = iBuscar , j = jBuscar ;
  11.   if ( aleatorio < N )
  12.     while ( ( i = rand ( ) % N ) ==  iBuscar ) ;
  13.   if ( aleatorio >= N )
  14.     while ( ( j = rand ( ) % M ) ==  jBuscar ) ;
  15.   printf ( "\n\n%d\n" , num [ i ][ j ] ) ;
  16.  
  17. /*************************************/

Un fuerte saludo Pantaláimon.

¡¡¡Saluditos!!!


Última edición por leosansan; 04/11/2014 a las 16:06

Etiquetas: columna, fila, int
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 22:59.