The C Standard function rand (available in stdlib.h) does not have good random number properties. The numbers generated by rand have a comparatively short cycle, and the numbers may be predictable. To achieve the best random numbers possible, an implementation-specific function needs to be used.
Non-Compliant Code Example
...
| Code Block | ||
|---|---|---|
| ||
enum {len = 12};
char id[len]; /* id will hold the ID, starting with the characters "ID" */
/* followed by a random integer */
int r;
int num;
/* ... */
r = rand(); /* generate a random integer */
num = snprintf(id, len, "ID%-d", r); /* generate the ID */
/* ... */
|
Compliant Solution (BSD)
A better pseudo random number generator is the BSD function random().
| Code Block | ||
|---|---|---|
| ||
enum {len = 12};
char id[len]; /* id will hold the ID, starting with the characters "ID" */
/* followed by a random integer */
int r;
int num;
/* ... */
srandom(time(0)); /* seed the PRNG with the current time */
/* ... */
r = random(); /* generate a random integer */
num = snprintf(id, len, "ID%-d", r); /* generate the ID */
/* ... */
|
...