Cómo generar un número aleatorio de 0.5 a 1.0.

Cómo generar el número aleatorio de 0.5 a 1.0.

Deberías poder usar algo como:

 double x = ((double)rand()) / ((double)RAND_MAX) / 2.0 + 0.5; 

La división por RAND_MAX le da un valor de 0 a 1, dividiéndolo por dos cae el rango de 0 a 0.5, luego agregando 0.5 le da 0.5 a 1. (inclusive en el extremo inferior y exclusivo en el extremo superior).

Alguna cosa como bramido te ayudará.

 double random(double start, double end) { double moduleValue = ((end - start) *10); //1.0 - .5 --> .5 -->> 5 double randum = rand() % moduleValue; // restrict the random to your range //if rendum == 2 --> .2 + .5 --> .7 in the range .5 -- 1.0 return (randum / 10) + start; // make your number to be in your range } 

Código de prueba para clarificación.

 #include  #define RAND_NUMBER 14 #define INT_FLAG 10 int main (int argc, const char * argv[]) { // insert code here... double start = .5; double end = 1.0; double moduleValue = ((end - start) * INT_FLAG); int randum = (RAND_NUMBER / moduleValue); double result = ((double)randum/INT_FLAG) + start; printf("%f",result); printf("Hello, World!\n"); return 0; } 
 #include #include main() { int i; double b,n; srand(getpid()); n=rand()%51+50; b=n/100; printf("%f\n",b); }