Генерировать случайное число от 0 до 1

Опубликовано: 19 Февраля, 2023

Задача состоит в том, чтобы сгенерировать случайное число от 0 до 1.

Очевидно, что число от 0 до 1 будет числом с плавающей запятой. Чтобы сгенерировать случайное число от 0 до 1, мы будем использовать функцию rand() . Функция rand() создает случайное число.

Подход: Генерация случайного числа от 0 до 1 со значением RAND_MAX

RAND_MAX value is basically the maximum value that can be obtained by the rand() function. So, first of all, we will be using the srand() function for creating different values on every run.

Следуйте шагам, указанным ниже, чтобы реализовать идею:

  • Запустите цикл, чтобы проверить, получаем ли мы разные случайные числа на каждой итерации.
  • Затем приведите значение функции rand() к типу double , поскольку число, которое мы хотим, должно быть числом с десятичной точкой.
  • внутри цикла мы будем выводить случайное значение, полученное функцией rand() , деленное на значение RAND_MAX.
  • Поскольку значение RAND_MAX в большинстве случаев будет больше, чем случайное число, полученное функцией rand(), мы получим результат «0.n».

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(N), где N — количество сгенерированных значений.
Вспомогательное пространство: O(1)

Другой подход:

The same thing can be done using INT_MAX instead of using RAND_MAX.

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(N), где N — количество сгенерированных значений.
Вспомогательное пространство: O(1)

Подход к генерации случайного числа путем определения диапазона:

The idea of this approach is that we will use the rand() function to get the random numbers between the defined range and then dividing it with a slightly larger number than the largest number in the defined range. 

Следуйте шагам, указанным ниже, чтобы реализовать идею:

  • Запустите цикл и внутри цикла установите функцию rand() для создания случайного числа в определенном диапазоне.
  • Затем возьмите диапазон от 1 до 10 9 . Мы берем большой диапазон чисел, так как число не должно повторяться большую часть времени.
    • Если число повторяется, мы будем получать одно и то же число от 0 до 1 каждый раз, когда число повторяется. Если взять небольшой диапазон чисел, программа большую часть времени будет выводить одни и те же случайные значения.
  • После определения диапазона мы будем делить полученное число на n + 1 , где n будет наибольшим числом в определенном диапазоне.

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(N), где N — количество сгенерированных значений.
Вспомогательное пространство: O(1)