今天突发奇想,想实现一个64位正整数的,处理数据量在10GB级别的数据处理程序。
在生成随机数的时候遇到了一点小障碍。
利用C库实现
若使用 srand()/rand() 这样的C函数的话返回的是一个int型的整数。
经过思考发现可以使用两次rand(),分别作为一个64bit正整数的前,后32位,实现难度也不大。
#define RAND_SEED 64
srand(RAND_SEED);
int a=rand();
int b=rand();
cout<<hex<<a<<" "<<b<<endl;
long long int c= ((long long int)a << 32) | b;
cout<<hex<