elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como crear un vector con 3/4 de probabilidad de exito
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como crear un vector con 3/4 de probabilidad de exito  (Leído 3,142 veces)
alpachino98

Desconectado Desconectado

Mensajes: 37


Valar Morghulis


Ver Perfil
Como crear un vector con 3/4 de probabilidad de exito
« en: 7 Octubre 2017, 13:10 pm »

El programa debe realizar una búsqueda dentro de varios vectores, de 10,de 100, de 1000...el problema es que el vector antes tenia una probabilidad de exito de 1/2 porque solo creaba vectores con numeros pares. Lo que tengo que hacer ahora es conseguir que la probabilidad sea de 3/4.

Esta era la función crear vector original:
Código:
void CrearVector (Vector v, int n)
{
int i;
   
    // Guarda en el vector los números pares incluidos en el intervalo [0,2n[
for ( i = 0; i < n; i++ )
v[i] = i*2;
}

Y esta nuestra modificación:

Código:
void CrearVector (Vector v, int n)
{
int i=0;
    cout<<n<<endl;
    // Guarda en el vector los números pares incluidos en el intervalo [0,2n[

while( i<(0.75*n))
{
if (i%2==0)
v[i]=i*2;
else
v[i] = i;
i++;
}
for ( i; i < n; i++ )
v[i]=i*2;

for(i=0;i<n;i++)
cout<<v[i]<<" ";

}

En nuestra modificación salen tanto numeros pares como impares pero hasta 3/4 del tamaño de nuestro vector, el problema es que salen desordenados y tenemos que realizar una busqueda binaria. Si alguien sabe como hacer que salgan ya ordenados o otro metodo para que la probabilidad sea de 3/4. Gracias de antemano :P


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Como crear un vector con 3/4 de probabilidad de exito
« Respuesta #1 en: 7 Octubre 2017, 13:23 pm »

Si no entendí mal, quieres que los primeros 3/4 del vector sean los números del 0 al n*(3/4), y el resto, todo pares (?)

En cualquier caso, no entiendo la finalidad del algoritmo de crear el vector.
En el segundo código, en el while, si i es par, lo multiplicas por 2.
Eso quedaría: 1, 4, 3, 8, 5, 12...
¿Por qué así? ¿Por qué multiplicar por 2 los pares?


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Como crear un vector con 3/4 de probabilidad de exito
« Respuesta #2 en: 7 Octubre 2017, 13:33 pm »

Te leo y releo, pero no acabo de entender qué quieres decir con "probabilidad de 3/4"...
Probabilidad de 3/4 ¿de QUÉ?.
Tampoc me queda claro, cuál es el propósito dle programa... pero mejor te digo lo que me parece entender y tu amplias detalles.

Creas vectores de números pares? (o también impares?). Ordenados?). Si están ordenados y están consecutivos, es superfluo generarlo, siempre podrás calcular al instante el enésimo valor de la secuencia.

Si multiplicas un número (par) por 0'75 (3/4), es equivalente a un bucle donde vas sumando cada vez 1'5:
2: (2 * 0'75) = 1'5
4: (4 * 0'75) = 3
6: (6 * 0'75) = 4'5
8: (8 * 0'75) = 6
Luego preguntarle si el número que sal es par, es perder el tiempo, matemáticamente es demostrable que en esa secuencia el resultado (de multiplicar n * 0'75)  será par, siempre que 'n' sea congruente con 8. ((n modulo 8) = 0 ), en resumen siempre que sea múltiplo de 8. Esto hace innecesario la multiplicación.
(no veo cual es el objetivo de todo esto).

Luego aparece 'otro' 3/4 pero este dices que es el tamaño del array... y luego dices que haces una búsqueda binaria...

En fin, es imposible entender qué es lo pretendes hacer. Explícate ordenadamente y con claridad. Tu tienes claro que necesitas, pero al explicarte te dejas cosas en 'el tintero' como si los demás ya nos hubieran explicado el planteamiento del problema...
En línea

alpachino98

Desconectado Desconectado

Mensajes: 37


Valar Morghulis


Ver Perfil
Re: Como crear un vector con 3/4 de probabilidad de exito
« Respuesta #3 en: 7 Octubre 2017, 16:30 pm »

El programa busca números aleatorios dentro de diferentes vectores, el programa busca por el metodo de busqueda secuencial, busqueda secuencia con parada, secuencial con centinela y por busqueda binaria ( por eso debe estar odenado sino la busqueda binaria no tiene sentido).

Siento no saber expresarme bien pero os pongo lo que me piden ( lo subrayado):

Como los costes varían en función de la posición donde se encuentre el elemento (o de la probabilidad de que esté), hay que repetir ejecuciones con el mismo tamaño para medir los costes medios. Modifica el programa de manera que calcule la media de los valores obtenidos al repetir los algoritmos de búsqueda sobre sobre 1000 búsquedas aleatorias. "Modifica también el programa para que la probabilidad de éxito sea ¾ (tal como está, la probabilidad es ½)". Es importante que las búsquedas aleatorias (con y sin éxito) se distribuyan uniformemente sobre todo el vector. Llena la siguiente tabla con estos valores y comenta los resultados.

La probalidad de encontrar un numero en uno de estos vectores es 1/2 porque, si os fijais en primero trozo de código que he puesto, el vector solo tienes números pares entonces la probalidad de encontrar un numero es 1/2 (si es o no par ). Para aumentar esta probalidad a 3/4 habiamos pensado meter todos los numeros pares como estaba antes pero ademas meter la mitad de los impares, por ejemplo un impar si y otro no.
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Como crear un vector con 3/4 de probabilidad de exito
« Respuesta #4 en: 7 Octubre 2017, 16:43 pm »

...
La probalidad de encontrar un numero (par) en uno de estos vectores es 1/2 porque, si os fijais en primero trozo de código que he puesto, el vector solo tienes números pares entonces la probalidad de encontrar un numero (par)es 1/2.

Para aumentar esta probalidad a 3/4 habiamos pensado meter todos los numeros pares como estaba antes pero ademas meter la mitad de los impares, por ejemplo un impar si y otro no.
Ok, con estos dos párrafos ya queda claro... lo que te piden.
Como las búsqeudas y la elección aleatoria, parece no serte problema, si no solo el añadido de dichos números, vamos a ellos.

Consiéralo al revés... si 3/4 es la probabilidad requierida (para los pares), entonces 1/4 será la de los impares... luego parece más sencillo rechazar 1 de cada dos impares que añadir pares y uno de cado 2 impares...

Código:
Bucle para k desde 0 hasta n
    Si ((k+1 modulo 4)<>0) luego  // esto es, añade el 0, 1, el 2 pero no el 3.
        Añadir k al array
    Fin si
Fin bucle
Añadidos:
0,1,2
4,5,6
8,9,10
12,13,14
...

Otra forma de verlo
Código:
Bucle para k desde 0 hasta n, en saltos de 4
   Añadir k al array
   Añadir k+1 al array
   Añadir k+2 al array
   // No se añade k+3 es el impar que rechazamos...
Fin bucle
En línea

alpachino98

Desconectado Desconectado

Mensajes: 37


Valar Morghulis


Ver Perfil
Re: Como crear un vector con 3/4 de probabilidad de exito
« Respuesta #5 en: 7 Octubre 2017, 16:57 pm »


Código:
Bucle para k desde 0 hasta n
    Si ((k+1 modulo 4)<>0) luego  // esto es, añade el 0, 1, el 2 pero no el 3.
        Añadir k al array
    Fin si
Fin bucle


Ahora si me has entendido, siento no haberme explicado mejor, esto es lo que necesito aunque no termino de entender lo de "modulo 4)<>0" a que te refieres con modulo de 4?
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Como crear un vector con 3/4 de probabilidad de exito
« Respuesta #6 en: 7 Octubre 2017, 17:29 pm »

No conoces el operador 'módulo'?. Módulo es el valor que resta de una división

20/4 = 5, resto=0
21/4 = 5, resto = 1 ---> o lo que es lo mismo: 21 modulo 4 = 1

Se le pregunta que si k+1 NO es múltiplo de 4, lo añada... prueba con diferentes números para k...

k
00+1 modulo 4 = 3 se añade, es distinto de 0.
01+1 modulo 4 = 2 se añade, es distinto de 0.
02+1 modulo 4 = 1 se añade, es distinto de 0.
03+1 modulo 4 = 0 NO se añade, es igual a 0.
04+1 modulo 4 = 3 se añade, es distinto de 0.
05+1 modulo 4 = 2 se añade, es distinto de 0.
06+1 modulo 4 = 1 se añade, es distinto de 0.
07+1 modulo 4 = 0 NO se añade, es igual a 0.
08+1 modulo 4 = 3 se añade, es distinto de 0.
09+1 modulo 4 = 2 se añade, es distinto de 0.
10+1 modulo 4 = 1 se añade, es distinto de 0.
11+1 modulo 4 = 0 NO se añade, es igual a 0.
12+1 modulo 4 = 3 se añade, es distinto de 0.
13+1 modulo 4 = 2 se añade, es distinto de 0.
« Última modificación: 7 Octubre 2017, 17:32 pm por NEBIRE » En línea

alpachino98

Desconectado Desconectado

Mensajes: 37


Valar Morghulis


Ver Perfil
Re: Como crear un vector con 3/4 de probabilidad de exito
« Respuesta #7 en: 7 Octubre 2017, 17:32 pm »

No conoces el operador 'módulo'?. Módulo es el valor que resta de una división


Si vale ya lo entiendo, si sabia lo que era pero no sabia a que te referias con eso de <>0.
Muchas gracias por tu ayuda. :-* :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Cuál es la probabilidad de...?
Foro Libre
1mpuls0 4 3,074 Último mensaje 10 Enero 2011, 03:29 am
por 1mpuls0
¿Es posible crear un vector de iteradores?
Programación C/C++
Orubatosu 7 3,667 Último mensaje 27 Noviembre 2014, 23:38 pm
por _Enko
Crear matriz partiendo de un vector ingresado
Programación C/C++
Faceless 7 3,193 Último mensaje 5 Octubre 2016, 23:41 pm
por Faceless
C++ OOP vectores de clases - como crear un vector de una clase « 1 2 3 »
Programación C/C++
GisiNA 22 16,127 Último mensaje 21 Febrero 2017, 17:12 pm
por GisiNA
N es éxito si alguien sabe como hacerlo q me de respuesta
Dudas Generales
Yohan 0 1,778 Último mensaje 27 Marzo 2017, 03:03 am
por Yohan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines