Generador de números random: crand

Este es un generador de números random que utiliza diferencias de tiempo entre dos procesos arbitrarios para generar un número aleatorio, entero, entre 1 y 9. Se utiliza la inconsistencia en la rapidez con que la computadora realiza operaciones. Este generador es poco portable y bajo ninguna circunstancia se recomienda su uso sobre el generador de números visto <aquí>

—————————— código —————————

#include <iostream>
#include <ctime>
#include <chrono>
#include <sstream>

double crand(int mark){
int a = 0; double t, num;
std::ostringstream strs;
std::string strDbl;
using namespace std::chrono;

high_resolution_clock::time_point t0 = high_resolution_clock::now(); //calculando tiempo 1
for (int j = 0; j < 832223; j++){
a++;
}

high_resolution_clock::time_point tmid = high_resolution_clock::now(); //calculando tiempo 2
for (int j = 0; j < 1243385; j++){
a++;
}

high_resolution_clock::time_point tf = high_resolution_clock::now(); //calculando tiempo 3

duration<double> time_span1 = duration_cast<duration<double>>(tf – t0);
duration<double> time_span2 = duration_cast<duration<double>>(tf – tmid);

t = time_span2.count()/time_span1.count();                          //obteniendo el ultimo digito de t

if (mark%2 == 0)
strs << t/7;
else if (mark%3 == 0)
strs << t/8;
else
strs << t/5;

strDbl = strs.str();
num = double(strDbl.at(strDbl.length() – 1) – ‘0’);

return num;
}

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s