A alguien se le ocurre algo mejor???
necesito hacer una funcion en ANSI C que devuelva en el 60% de los casos un 1, el resto un 0. Obviamente de forma aleatoria, otros datos: la funcion se va a llamar desde un ciclo y ademas el srand si o si lo va a hacer esta funcion ademas solo puedo usar la biblioteca standar de ANSI C
aca les mando lo que yo hice...
int GenerarAsistencia (void)
{
int vec [10];
static int a=2;/*solo la primera vez que se llama la funcion a=2*/
vec [0]=2;
vec [1]=3;
vec [2]=2;
vec [3]=3;
vec [4]=2;
vec [5]=3;
vec [6]=2;
vec [7]=3;
vec [8]=2;
vec [9]=2;
if (a==2)
srand (time (NULL));
if (( vec [rand()%9] ) %2 == 0) /* saco el resto con 2 de una posicion aleatoria del vector *como el 60% son pares, en ese porcentaje va a devolver 1*/
{a=1;
return a;}
else
{a=0;
return a;}
}
a alguien se le ocurre algo mejor?
aca les mando lo que yo hice...
int GenerarAsistencia (void)
{
int vec [10];
static int a=2;/*solo la primera vez que se llama la funcion a=2*/
vec [0]=2;
vec [1]=3;
vec [2]=2;
vec [3]=3;
vec [4]=2;
vec [5]=3;
vec [6]=2;
vec [7]=3;
vec [8]=2;
vec [9]=2;
if (a==2)
srand (time (NULL));
if (( vec [rand()%9] ) %2 == 0) /* saco el resto con 2 de una posicion aleatoria del vector *como el 60% son pares, en ese porcentaje va a devolver 1*/
{a=1;
return a;}
else
{a=0;
return a;}
}
a alguien se le ocurre algo mejor?
//una solucion puede ser
if(rand()>32767/2)a=1 else a=0;
return a;
//otra solucion es cambiar el valor de RAND_MAX
RAND_MAX =1;
if(rand()))a=1 else a=0;
return a;
// se supone que RAND_MAX esta definido en stdlib.h
//RAND_MAX =0X7FFF;
//en cristiano es 32767 y este es el valor maximo de rand();