c - генератор случайных чисел

Как я генерирую случайное число между 0 и 1?

15
задан Mark Elliot 8 March 2010 в 13:30
поделиться

3 ответа

Вы можете сгенерировать псевдослучайное число, используя stdlib.h . Просто включите stdlib, затем позвоните по номеру

double random_number = rand() / (double)RAND_MAX;
22
ответ дан 1 December 2019 в 01:05
поделиться

Предполагая, что ОП хочет либо 0, либо 1:

srand(time(NULL));
foo = rand() & 1;

Редактирование, вдохновленное комментарием: Старые реализации rand() имели недостаток - биты низшего порядка имели гораздо более короткие периоды, чем биты высшего порядка, поэтому использование младшего бита для таких реализаций не очень хорошо. Если вы знаете, что ваша реализация rand() страдает от этого недостатка, используйте старший бит, например, так:

foo = rand() >> (sizeof(int)*8-1)

предполагая обычные архитектуры 8 бит на байт

9
ответ дан 1 December 2019 в 01:05
поделиться

man 3 drand48 - это именно то, что вы просили.

Функции drand48() и erand48() возвращают неотрицательные значения двойной точности с плавающей точкой, равномерно распределенные по интервалу [0.0 , 1.0].

Они находятся в #include на платформах UNIX. Однако их нет в ANSI C, поэтому (например) вы не найдете их в Windows, если только не принесете свою собственную реализацию (например, LibGW32C).

8
ответ дан 1 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: