rand_s
Genera un numero pseudocasuale compreso.una versione di bordo con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.
errno_t rand_s( unsigned int* randomValue);
Valore restituito
Zero se l'operazione viene completata correttamente, in caso contrario, un codice di errore.Se il puntatore di input randomValue è un puntatore null, richiamerà di funzione un gestore non valido di parametro, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, la funzione restituisce EINVAL e set errno in EINVAL.Se la funzione ha esito negativo per qualsiasi altro motivo, *randomValue è impostato su 0.
Note
rand_s la funzione scrive un Integer pseudocasuale compreso nell'intervallo 0 e UINT_MAX il puntatore di input.rand_s la funzione utilizza il sistema operativo per generare numeri casuali a livello di crittografia sicure.Non utilizza il valore di inizializzazione generato da srand funzione, né influisce sulla sequenza di numeri casuali utilizzata da rand.
rand_s la funzione richiede tale costante _CRT_RAND_S essere definito prima dell'istruzione di inclusione per la funzione siano dichiarati, come nel seguente esempio:
#define _CRT_RAND_S
#include <stdlib.h>
rand_s dipende da RtlGenRandom API, disponibile solo in Windows XP e versioni successive.
Requisiti
routine |
Intestazione di associazione |
---|---|
rand_s |
<definito> |
Per ulteriori informazioni, vedere compatibilità.
Esempio
// 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 );
}
}
Esempio di output
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