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