Questions
- Do these codes generate true random numbers?
- If not: can you prove their pseudo-randomness?
For computers with more than two CPUs
#include<chrono>
#include<iostream>
#include<thread>
using namespace std;
#define Mili 7
#define Base 7
#define Thrs 2
typedef unsigned char Num;
typedef unsigned long long Out;
volatile Out out,tmp;
void inline thr(Num const num){
while(true)
out=out*Base+tmp,tmp=tmp*Base+num;
}
int main(){
thread ths[Thrs];
for(Num i=0;i<Thrs;++i)
ths[i]=thread(thr,i);
this_thread::sleep_for(chrono::milliseconds(Mili));
while(true)
cout.write((char*)&out,sizeof(out));
}
For computers with two CPUs
#include<iostream>
using namespace std;
#define Base 7
#define Iter 53
typedef unsigned char Num;
typedef unsigned long long Out;
volatile Out out,tmp;
int main(){
for(Num i=0;i<Iter;++i)
#pragma omp parallel for schedule(runtime)
for(Num num=0;num<Iter;++num)
out=out*Base+tmp,tmp=tmp*Base+num;
while(true){
#pragma omp parallel for schedule(runtime)
for(Num num=0;num<Iter;++num)
out=out*Base+tmp,tmp=tmp*Base+num;
cout.write((char*)&out,sizeof(out));
}
}
For computers with one CPU:
#include<chrono>
#include<iostream>
#include<thread>
using namespace std;
#define Nano 1
#define Mili 7
#define Base 7
#define Thrs 2
typedef unsigned char Num;
typedef unsigned long long Out;
volatile Out out,tmp;
void inline thr(Num const num){
while(true)
out=out*Base+tmp,tmp=tmp*Base+num;
}
int main(){
thread ths[Thrs];
for(Num i=0;i<Thrs;++i)
ths[i]=thread(thr,i);
this_thread::sleep_for(chrono::milliseconds(Mili));
while(true)
cout.write((char*)&out,sizeof(out)),
this_thread::sleep_for(chrono::nanoseconds(Nano));
}
More information:
http://ift.tt/1C6YOkq
http://youtube.com/watch?v=AKy00kxClJk
Aucun commentaire:
Enregistrer un commentaire