39 lines
668 B
C
39 lines
668 B
C
#include <stdio.h>
|
|
#include <sys/time.h>
|
|
#include <stdbool.h>
|
|
|
|
long long millis(){
|
|
struct timeval tv;
|
|
gettimeofday(&tv, NULL);
|
|
long long millisecs = (long long)tv.tv_sec * 1000 + tv.tv_usec / 1000;
|
|
return millisecs;
|
|
}
|
|
bool flip(){
|
|
bool n = false;
|
|
long long then = millis() +1;
|
|
while (millis() <= then){
|
|
n=!n;
|
|
}
|
|
return n;
|
|
}
|
|
bool get_fair_bit(){
|
|
while (true) {
|
|
bool a = flip();
|
|
if (a != flip()){
|
|
return a;
|
|
}
|
|
}
|
|
}
|
|
char get_random_byte(){
|
|
char n = 0;
|
|
for (int i = 0; i < 8; ++i){
|
|
n <<=1;
|
|
n|= get_fair_bit();
|
|
}
|
|
return n;
|
|
}
|
|
int main(){
|
|
for (int i = 0; i < 128; ++i){
|
|
printf("%hd\n", get_random_byte());
|
|
}
|
|
}
|