A alguien se le ocurre algo mejor???

NIco
25 de Mayo del 2005
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?

josecode
25 de Mayo del 2005

//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();