Random Numbers
From charlesreid1
Exploring some curious random number behavior in C++...
Simple Program
Put this code in a file called myrand.cpp
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
#include <iostream>
using std::cout;
using std::endl;
int main ()
{
int mynum;
srand (time(NULL)); /* initialize random seed */
for( int i = 0; i < 5; i++) {
cout << rand() << endl;
}
return 0;
}
Compilation
Compile with g++:
$ g++ myrand.cpp
Output
Run it:
$ ./a.out
Here is the output from my terminal when I run this program:
charles @ cronus [ 2016-06-21 - 15:00:12 - 41 ] /temp $ ./a.out 1575746672 805981500 1951708871 1705770619 2127589730 charles @ cronus [ 2016-06-21 - 15:00:13 - 42 ] /temp $ ./a.out 1575763479 1088456749 1426875297 543230630 1124215013 charles @ cronus [ 2016-06-21 - 15:00:14 - 43 ] /temp $ ./a.out 1575780286 1370931998 902041723 1528174288 120840296 charles @ cronus [ 2016-06-21 - 15:00:15 - 44 ] /temp $ ./a.out 1575797093 1653407247 377208149 365634299 1264949226
Curious Behavior
Notice how the first random number that is generated is always starting at around 15757XXXXX. Seeding the random number generator with the current time seems to generate very similar (read: NOT random) numbers for the first random number.
I hope the people who design cryptosystems know about this!