Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Non-Compliant Code Example

The following code will generate predictable numbers with generates an ID with a numeric part produced by calling the rand() function. The IDs produced will be predictable and have limited randomness.

Code Block
bgColor#FFCCCC

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

A better pseudo random number generator is the BSD function random.

Code Block
bgColor#ccccff
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
...

The rand48 family of functions provides another alternative.

...