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