rand_s

Pseudorandom numarası oluşturur.Bir sürümü rand açıklandığı gibi güvenlik geliştirmeleri ile CRT'deki Güvenlik Özellikleri.

errno_t rand_s(   unsigned int* randomValue);

Dönüş Değeri

Başarılı olursa, sıfır değilse, bir hata kodu.Giriş işaretçisi randomValue bir null işaretçi açıklandığı gibi bir geçersiz parametre işleyicisi işlevi çağırır Parametre Doğrulama.İşlev verir yürütülmesine devam etmek için izin verilip verilmediğini, EINVAL ve errno için EINVAL.Diğer herhangi bir nedenle için işlev başarısız olursa *randomValue 0 olarak ayarlanır.

Notlar

rand_s İşlevi 0 ile aralığında pseudorandom tamsayı Yazar UINT_MAX giriş fare işaretçisini.rand_s İşlevini kullanan işletim sistemi şifreli olarak güvenli rasgele sayılar üretilecek.Tarafından üretilen tohum kullanmaz srand işlevi tarafından kullanılan rasgele numara sırasını etkilemez ne de rand.

rand_s İşlevi, bu sabite gerektirir _CRT_RAND_S için aşağıdaki örnekte gösterildiği şekilde bildirildiği işlevin eklenmesi deyimi önce tanımlı:

#define _CRT_RAND_S
#include <stdlib.h>

rand_sbağlıdır RtlGenRandom bulunan Windows xp ve sonraki sürümlerinde yalnızca API.

Gereksinimler

Yordamı

Gerekli başlık

rand_s

<stdlib.h>

Daha fazla bilgi için bkz: Uyumluluk.

Örnek

// crt_rand_s.c
// This program illustrates how to generate random
// integer or floating point numbers in a specified range.

// Remembering to define _CRT_RAND_S prior
// to inclusion statement.
#define _CRT_RAND_S

#include <stdlib.h>
#include <stdio.h>
#include <limits.h>

int main( void )
{
    int             i;
    unsigned int    number;
    double          max = 100.0;
    errno_t         err;

    // Display 10 random integers in the range [ 1,10 ].
    for( i = 0; i < 10;i++ )
    {
        err = rand_s( &number );
        if (err != 0)
        {
            printf_s("The rand_s function failed!\n");
        }
        printf_s( "  %u\n", (unsigned int) ((double)number /
                       ((double) UINT_MAX + 1 ) * 10.0) + 1);
    }

    printf_s("\n");

    // Display 10 random doubles in [0, max).
    for (i = 0; i < 10;i++ )
    {
        err = rand_s( &number );
        if (err != 0)
        {
            printf_s("The rand_s function failed!\n");
        }
        printf_s( "  %g\n", (double) number / 
                          ((double) UINT_MAX + 1) * max );
    }
}

Örnek Çıktı

  10
  4
  5
  2
  8
  2
  5
  6
  1
  1

  32.6617
  29.4471
  11.5413
  6.41924
  20.711
  60.2878
  61.0094
  20.1222
  80.9192
  65.0712

.NET Framework Eşdeğeri

System::Random sınıfı

Ayrıca bkz.

Başvuru

Kayan Nokta Desteği

srand