почему следующий код c создает действительные числа только в диапазоне от 0 до 1 (например: 0,840188,0,394383... и т. д.) для double a,b
, когда значение для RAND_MAX выглядит как 0.000000
. Разве RAND_MAX
не должно устанавливать максимальное значение для числа, сгенерированного функцией rand()
?
#include <stdio.h>
#include <stdlib.h>
int main()
{
double a,b,c;
for (int i=0;i<100;i++){
a=(double)rand()/(double)RAND_MAX;
b=(double)rand()/(double)RAND_MAX;
c=a-b;
printf("itteration : %d values a=%f,b=%f,c=%f, RAND_MAX=%f \n",i,a,b,c,RAND_MAX);
}
return 0;
}
RAND_MAX
не является двойным, это целое число, поэтому используйте %d для его печати с помощью printf. rand не подходит для генерации двойного числа, это дизайн для целого числа, и он не очень случайный. Вы должны искать библиотеку, которая обрабатывает случайные числа в C. - person Stargateur   schedule 28.08.2018