Генератор случайных чисел в диапазоне от 0 до 1 (не целых) - C (СИ)

Формулировка задачи:

Здравствуйте! Помогите пожалуйста. Вроде весь форум просмотрела,но ответа не нашла. Мне нужно сгенерировать случайное число в диапазоне от 0 до 1. У меня все время выдает 0 или 1.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
float r;
    srand(time(NULL));
    r=0+rand()%2;
    printf("%f", r);
}
А если тип поставить double, то вообще одни нули выводит. Подскажите пожалуйста, что делаю не так и как правильно. Заранее благодарю!

Код к задаче: «Генератор случайных чисел в диапазоне от 0 до 1 (не целых) - C (СИ)»

textual
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
#define rand01() ( fabs(sin(rand())) )
 
int main(void) {
    int i;
   
    srand(time(NULL));
   
    for ( i = 0; i < 10; ++i )
        printf("%f\n", rand01());
   
    return 0;
}

11   голосов, оценка 4.364 из 5


СОХРАНИТЬ ССЫЛКУ