Freigeben über


rand_s

Generiert eine Pseudozufallszahl.Eine Version von Rand mit unter Security Enhancements, wie in Sicherheitsfeatures im CRTbeschrieben.

errno_t rand_s(   unsigned int* randomValue);

Rückgabewert

Beliebige wenn erfolgreich andernfalls ein Fehlercode.Wenn der Eingabezeiger randomValue ein NULL-Zeiger ist, ruft die Funktion einen ungültigen Parameter für ein, wie in Parametervalidierungbeschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, gibt die Funktion EINVAL zurück und legt ihn fest. EINVALzu errnoWenn die Funktion für jeden anderen Grund fehlschlägt, *randomValue wird auf 0 festgelegt.

Hinweise

Die rand_s-Funktion schreibt eine UINT_MAX pseudozufälligen ganzen Zahl im Bereich von 0 bis Eingabezeiger.Die rand_s-Funktion verwendet, um das Betriebssystem kryptografisch sichere Zufallszahlen generiert.Es verwendet nicht den Startwert, der von der srand-Funktion generiert wird, wirkt sich trotzdem die Zufallszahl sequence, die von randverwendet wird.

Die rand_s-Funktion erfordert, dass konstantes _CRT_RAND_S vor der Inklusions Anweisung definiert wird, sodass die Funktion deklariert werden kann, wie im folgenden Beispiel dargestellt:

#define _CRT_RAND_S
#include <stdlib.h>

rand_s hängt vom RtlGenRandom API ab, das in Windows XP und höher nur verfügbar ist.

Anforderungen

Routine

Erforderlicher Header

rand_s

<stdlib.h>

Weitere Informationen finden Sie unter Kompatibilität.

Beispiel

// 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 );
    }
}

Beispielausgabe

  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-Entsprechung

System::Zufällige Klasse

Siehe auch

Referenz

Gleitkommaunterstützung

srand