Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sahte bir sayı oluşturur. Bu işlev, CRT'deki Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri ile işlevinin randdaha güvenli bir sürümüdür.
Sözdizimi
errno_t rand_s(unsigned int* randomValue);
Parametreler
randomValue
Oluşturulan değeri tutmak için bir tamsayı işaretçisi.
Dönüş değeri
Başarılı olursa sıfır, aksi takdirde bir hata kodu. Giriş işaretçisi _randomValue_ bir NULL işaretçiyse, işlev Parametre doğrulama bölümünde açıklandığı gibi geçersiz bir parametre işleyicisi çağırır. Yürütmenin devam etmesi için izin verilirse, işlevi döndürür EINVAL ve olarak EINVALayarlanırerrno. İşlev başka bir nedenle *_randomValue_ başarısız olursa 0 olarak ayarlanır.
Açıklamalar
İşlev, rand_s giriş işaretçisine 0 UINT_MAX aralığındaki bir sahte tamsayı yazar. işlevi, rand_s şifreleme açısından güvenli rastgele sayılar oluşturmak için işletim sistemini kullanır. işlevi tarafından srand oluşturulan tohumu kullanmaz ve tarafından randkullanılan rastgele sayı dizisini etkilemez.
Aşağıdaki _CRT_RAND_S örnekte gösterildiği gibi, işlevin stdlib.h üst bilgisi rand_s dahil edilmeden önce sabit tanımlanmalıdır:
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.
#define _CRT_RAND_S
#include <stdlib.h>
rand_sRtlGenRandom yalnızca Windows XP ve sonraki sürümlerde kullanılabilen API'ye bağlıdır.
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.
// Remember to define _CRT_RAND_S before you include
// stdlib.h.
#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