Ескерім
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Создает псевдослучайное число. Доступна более программно безопасная версия этой функции; см. раздел rand_s
. Числа, созданные rand
не криптографически безопасными. Для более криптографически безопасного создания случайных чисел используйте rand_s
или функции, объявленные в стандартной библиотеке C++ в <random>
.
Синтаксис
int rand(void);
Возвращаемое значение
Функция rand
возвращает псевдослучайное число, как описано выше. Не возвращается ошибка.
Замечания
Функция rand
возвращает псевдослучайное целое число в диапазоне от 0 до RAND_MAX
(32767). Используйте функцию srand
для заполнения генератора псевдорандомных чисел перед вызовом rand
.
Функция rand
создает известную последовательность и не подходит для использования в качестве криптографической функции. Для более криптографически безопасного создания случайных чисел используйте rand_s
или функции, объявленные в стандартной библиотеке C++ в <random>
.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Маршрут | Обязательный заголовок |
---|---|
rand |
<stdlib.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_rand.c
// This program seeds the random-number generator
// with a fixed seed, then exercises the rand function
// to demonstrate generating random numbers, and
// random numbers in a specified range.
#include <stdlib.h> // rand(), srand()
#include <stdio.h> // printf()
void SimpleRandDemo(int n)
{
// Print n random numbers.
for (int i = 0; i < n; i++)
{
printf(" %6d\n", rand());
}
}
void RangedRandDemo(int range_min, int range_max, int n)
{
// Generate random numbers in the interval [range_min, range_max], inclusive.
for (int i = 0; i < n; i++)
{
// Note: This method of generating random numbers in a range isn't suitable for
// applications that require high quality random numbers.
// rand() has a small output range [0,32767], making it unsuitable for
// generating random numbers across a large range using the method below.
// The approach below also may result in a non-uniform distribution.
// More robust random number functionality is available in the C++ <random> header.
// See https://learn.microsoft.com/cpp/standard-library/random
int r = ((double)rand() / RAND_MAX) * (range_max - range_min) + range_min;
printf(" %6d\n", r);
}
}
int main(void)
{
// Seed the random-number generator with a fixed seed so that
// the numbers will be the same every time we run.
srand(1792);
printf("Simple random number demo ====\n\n");
SimpleRandDemo(10);
printf("\nRandom number in a range demo ====\n\n");
RangedRandDemo(-100, 100, 100000);
}```
```Output
Simple random number demo ====
5890
1279
19497
1207
11420
3377
15317
29489
9716
23323
Random number in a range demo ====
-82
-46
50
77
-47
32
76
-13
-58
90
См. также
Поддержка математических и плавающих точек
srand
rand_s
Библиотека C++ <random>