From charlesreid1

Revision as of 22:01, 21 June 2016 by Admin (talk | contribs) (Created page with "Exploring some curious random number behavior in C++... =Simple Program= Put this code in a file called <code>myrand.cpp</code> <pre> #include <stdlib.h> /* srand, rand...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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!