拿走不谢。rand() 如果用时间作为种子 在一秒内没法生成完全随机的,必须要用windows api密码学库函数系列
#include <wincrypt.h>
#pragma comment(lib,"advapi32")
int GetRandom() {
int rnum = 0;
HCRYPTPROV hProvider = 0;
const DWORD dwLength = sizeof(int);
BYTE pbBuffer[dwLength] = {};
DWORD result =::CryptAcquireContext(&hProvider, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT);
assert(result);
result = ::CryptGenRandom(hProvider, dwLength, pbBuffer);
rnum = *(int*)pbBuffer;
assert(result);
::CryptReleaseContext(hProvider, 0);
return rnum;
}
int main(){
for (int i=0;i<20;i++){
printf("rand(%d) = %d\n",i,GetRandom());
}
return 0;
}
#include <wincrypt.h>
#pragma comment(lib,"advapi32")
int GetRandom() {
int rnum = 0;
HCRYPTPROV hProvider = 0;
const DWORD dwLength = sizeof(int);
BYTE pbBuffer[dwLength] = {};
DWORD result =::CryptAcquireContext(&hProvider, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT);
assert(result);
result = ::CryptGenRandom(hProvider, dwLength, pbBuffer);
rnum = *(int*)pbBuffer;
assert(result);
::CryptReleaseContext(hProvider, 0);
return rnum;
}
int main(){
for (int i=0;i<20;i++){
printf("rand(%d) = %d\n",i,GetRandom());
}
return 0;
}