Aracılığıyla paylaş


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ığı