Numeros aleatorios con una distribución binomial negativa PARA QUIENES LE SIRVA

Iniciado por peyong3, 15 Julio 2014, 06:37 AM

0 Miembros y 1 Visitante están viendo este tema.

peyong3

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

int main(int argc, char *argv[])
{
    int i,k;
    float media,varianza,p,q,p1,n1,r,rc,multiplicatoria=1,x;
  printf("\ningrese p:");
  scanf("%f",&p);
  printf("\ningrese  cuantos numeros aleatorios se generaran k:");
  scanf("%d",&k);

  q=(1-p);
  printf("el valor de q es:%f\n",q);
  media=((k*q)/p);
  varianza=((k*q)/(p*p));
  printf("\nla media es:%f\n",media);
  printf("la varianza es:%f\n\n",varianza);
  p1=(media/varianza);
  n1=((media*media)/(varianza-media));

 
  srand((unsigned)time(NULL));
  for(i=1;i<=k;i++){
                    r=sin((float)rand());
                    rc=fabs(r);
                   
                    multiplicatoria=(multiplicatoria*rc);
                    printf("el r%d es:%f\n",i,rc);
                    }

  printf("\nmultiplicatoria de r es:%f",multiplicatoria);
  x=(log(multiplicatoria))/log(q);
  printf("\nnum aleatoria con bin neg. es:%f\n",x);
  system("PAUSE");   
  return 0;
}

leosansan

La verdad es que ando dándole vueltas a qué tiene que ver el código que propones con una Distribución binomial negativa .

En esencia el cálculo de los pseudo-aleatorios se resume a:

Cita de: peyong3 en 15 Julio 2014, 06:37 AM
.............................................
 srand((unsigned)time(NULL));
 for(i=1;i<=k;i++){
   r=sin((float)rand());
   rc=fabs(r);
.............................................


Es decir al cálculo de sin y claro así se obtienen salidas como éstas:

Citar
el r1 es:0.988268
el r2 es:0.999706
el r3 es:0.972046
el r4 es:0.901397
el r5 es:0.876692
el r6 es:0.820528
el r7 es:0.994781
el r8 es:0.237657
el r9 es:0.772648
el r10 es:0.566853
el r11 es:0.220925
el r12 es:0.750848
el r13 es:0.743281
el r14 es:0.986598
el r15 es:0.847679

OTRA SALIDA:

el r1 es:0.358369
el r2 es:0.453992
el r3 es:0.882949
el r4 es:0.891008
el r5 es:0.766046
el r6 es:0.965927
el r7 es:0.587786
el r8 es:0.754711
el r9 es:0.939694
el r10 es:0.544640
el r11 es:0.906309
el r12 es:0.207912
el r13 es:0.809018
el r14 es:0.882949
el r15 es:0.945520

Donde se observa la preponderancia de valores superiores a 0.5 respecto a valores inferiores al mismo. Y es que al usar la función "sin" hay que recordar que, en grados sexagesimales para entenderlo mejor, para ángulos de 0-30 el valor del sin es inferior o igual a 0.5 mientras que para ángulos de 30-90 el valor es superior a 0.5. Es decir, y a lo breve, existen el doble de probabilidad de que el sin sea superior a 0.5 a que sea inferior, de ahí los resultados obtenidos.

¿No habrás querido decir otra cosa con eso de "Números aleatorios con una distribución binomial negativa"?.

¡¡¡¡ Saluditos! ..... !!!!



ivancea96