rand
Sahte bir sayı oluşturur. Bu işlevin program aracılığıyla daha güvenli bir sürümü mevcuttur; bkz rand_s
. . tarafından rand
oluşturulan sayılar şifreleme açısından güvenli değildir. Daha kriptografik olarak güvenli rastgele sayı oluşturma için veya içindeki <random>
C++ Standart Kitaplığı'nda bildirilen işlevleri kullanınrand_s
.
Sözdizimi
int rand(void);
Dönüş değeri
rand
yukarıda açıklandığı gibi sahte bir sayı döndürür. Hata döndürme yok.
Açıklamalar
İşlev, rand
0 RAND_MAX
ile (32767) aralığında bir sözde tamsayı döndürür. srand
işlevini kullanarak çağrısından rand
önce pseudorandom-number oluşturucusunun tohumunu oluşturun.
rand
İşlev iyi bilinen bir dizi oluşturur ve şifreleme işlevi olarak kullanmak için uygun değildir. Daha kriptografik olarak güvenli rastgele sayı oluşturma için veya içindeki <random>
C++ Standart Kitaplığı'nda bildirilen işlevleri kullanınrand_s
.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
rand |
<stdlib.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// 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
Ayrıca bkz.
Matematik ve kayan nokta desteği
srand
rand_s
C++ <random>
kitaplığı