Anuncio

Colapsar
No hay ningún anuncio todavía.

Numeros aleatorios.

Colapsar
X
 
  • Filtro
  • Hora
  • Mostrar
Borrar todo
nuevos mensajes

  • Matlab Numeros aleatorios.

    Buenas amigos. Quisiera consultarles acerca de cómo hacer un programa.

    Imagínense los números 1, 2, 3, 4 y 5. Quisiera crear un vector de 3 componentes, cada componente debe ser cualquiera de los 5 números anteriores (sin repetir). Pero no con iguales probabilidades, sino que por ejemplo, yo al 1 le doy un 20% de aparecer, al 2 un 40%, al 3 un 10%, al 4 un 15%, y al 5 un 15%.

    Recordar que quisiera hacerlo sin repetición. ¿Esto es posible hacerlo en Matlab? ¿Me podéis ayudar?
    Otra duda. Si por ejemplo el primer número en salir fuese el 3, ¿que ocurriría con su porcentaje de no haber repetición? ¿se repartiría entre el resto de números?

    Un saludo
    Última edición por skinner; 15/07/2012, 19:43:00.

  • #2
    Re: Numeros aleatorios.

    No tengo idea del matlab, pero a nivel de algoritmo quizas (medio chancho pero bueno), si declaras un vector de 100 posiciones y lo completas en tu caso con 20 unos, 40 dos, 10 tres, 15 cuatros y 15 cincos, luego llamas un numero aleatorio entre 0 y 99 o 1 y 100 y tomas el valor del subindice del numero aleatorio generado, luego el valor ese lo borras. Si el numero que sale no tiene valor vuelves a buscar el aleatorio del subinidice, creo que ahi solucionas el tema de la probabilidad que neecsitas.

    Puede ser un disparate, jeje, si es asi disculpas.

    Comentario


    • #3
      Re: Numeros aleatorios.

      Asi como lo pones, pero sin borrar. Si borras un elemento cambias el peso de las demás selecciones. El problema de la solicitud original de skinner (probablemente por eso no recibió respuesta) es que la no repetición que impone en los elementos del vector resultante altera los pesos asignados. Como yo lo veo lo que pide es imposible Por ejemplo, si el vector resultante fuese de 5 elementos sin repetir, entonces cada uno tendría 100% de probabilidad de aparecer.

      Saludos,

      Al
      Don't wrestle with a pig in the mud. You'll both get dirty, but the pig will enjoy it. - Parafraseando a George Bernard Shaw

      Comentario


      • #4
        Re: Numeros aleatorios.

        Hola a los dos. Yo lo que hice (en su tiempo) fue crear un vector de 100 componentes y rellenar (ver el ejemplo de mi primer post) los 20 primeros elementos con "unos", los 40 siguientes con "dos", los 10 siguientes con "tres", los 15 siguientes con "cuatros", y los 15 siguientes con "cincos".

        Decía que cogiera un nº al azar entre 1 y 100, y este número se referiría a la componente del vector, resultando el elemento. Y en su lugar, coloco un Centinela (por ejemplo, el 0 ó como yo hice, el -1). Entonces repito el proceso hasta completar el vector (si toca el centinela en alguna iteración, entonces repito la generación del nº al azar)

        ¿Qué opináis? ¿Estuvo bien?

        Un saludo!!

        Comentario


        • #5
          Re: Numeros aleatorios.

          Borrar o centinela viene a ser lo mismo. Si en la primera elección obtienes un 2, por poner un ejemplo, y lo borras/marcas, la siguiente selección no la estarás haciendo sobre 100 números sino sobre 99, y habrán 39 doses por lo cual la probabilidad de sacar un 2 será de 39.4% mientras que la probabilidad de sacar algún otro número habrá aumentado. Si a esto le añadimos que, sin importar si sacas de nuevo un 2 lo vas a rechazar porque no pueden haber repeticiones, entonces en efecto estarás escogiendo entre los restantes 4 números con probalilidades de 20/60, 10/60, 15/60 y 15/60, respectivamente. Cuál es la probabilidad de que cada uno de los tres números que vas a seleccionar aparezca en el resultado final es un verdadero misterio para mi .

          Saludos,

          Al
          Don't wrestle with a pig in the mud. You'll both get dirty, but the pig will enjoy it. - Parafraseando a George Bernard Shaw

          Comentario


          • #6
            Re: Numeros aleatorios.

            Hola:

            No se nada de Matlab, pero leyendo los distintos post parece que en principio es mas un problema donde primero hay que definir el método probabilistico a utilizar.
            Me gustaría, si no molesta, aportar mi grano de arena.

            Un modo de plantearlo es como ya lo hicieron, con un numero fijo de elementos, y al elegir el 1º elemento al azar se eliminan (por la no repetición) todos los elementos iguales a este cambiando el conjunto de donde podes elegir, cambiando las probabilidades para cada numero elegible, como bien ya lo acotaron. Si no me acuerdo mal esto se llamaba probabilidad condicional de un suceso, y hay una forma sencilla de calcularlo, aunque no me acuerdo y no me parece el centro de la cuestión.

            Ahora leyendo vuestros post se me ocurrió otra cosa, no se si tiene sentido o no, es solo una idea. Supongamos que tenemos el vector inicial que ustedes mencionaron, al extraer el 1º numero este nos permite elegir otro vector donde este numero no este pero donde se mantengan las probabilidades originales para cada numero que si este. Procediendo asi sucesivamente podemos obtener los 3 números sin repeticion y manteniendo las probabilidades originales, eso si se necesitara definir una cantidad importante de vectores.

            No se si tiene que ver con el planteo o tiene algún sentido, pero se me ocurrió plantearlo.

            Suerte
            No tengo miedo !!! - Marge Simpson
            Entonces no estas prestando atención - Abe Simpson

            Comentario

            Contenido relacionado

            Colapsar

            Trabajando...
            X