Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Generuje liczbę pseudorandom. Dostępna jest bardziej programowa wersja tej funkcji; zobacz rand_s
. Liczby generowane przez rand
usługę nie są kryptograficznie bezpieczne. Aby uzyskać bardziej kryptograficznie bezpieczne generowanie liczb losowych, użyj funkcji rand_s
zadeklarowanych w standardowej bibliotece języka C++ w programie <random>
.
Składnia
int rand(void);
Wartość zwracana
rand
Zwraca liczbę pseudorandom, jak opisano powyżej. Nie ma zwracanego błędu.
Uwagi
Funkcja rand
zwraca liczbę całkowitą pseudorandom w zakresie od 0 do RAND_MAX
(32767). srand
Użyj funkcji , aby zainicjować generator pseudorandom-number przed wywołaniem metody rand
.
Funkcja rand
generuje dobrze znaną sekwencję i nie jest odpowiednia do użycia jako funkcja kryptograficzna. Aby uzyskać bardziej kryptograficznie bezpieczne generowanie liczb losowych, użyj funkcji rand_s
zadeklarowanych w standardowej bibliotece języka C++ w programie <random>
.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
rand |
<stdlib.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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
Zobacz też
Obsługa obliczeń matematycznych i zmiennoprzecinkowych
srand
rand_s
Biblioteka języka C++ <random>