확실히 임의 생성기를 사용할 수 없습니다. 현재 unixtime() + microtime()에서 CRC32 해시를 만들고 있습니다.랜덤 제네레이터의 랜덤 시드를 생성하는 방법은 무엇입니까?
hashing time() + microtime()보다 더 똑똑한 방법이 있습니까?
결과에서 완전히 만족스럽지는 않지만 더 무작위 적이기를 기대했지만 MicroTime()에 대한 호출을 추가 할 때까지 강한 패턴을 볼 수는 있지만 속도가 훨씬 느려지므로, 이렇게하는 최적의 방법을 찾고 있습니다.
이 바보 코드는 지금까지 만들 수있는 최고의 출력, 계산이 필요했다 생성 또는 I 출력에 약간의 패턴을 볼 수 있었다 :
starthash(crc32);
addtohash(crc32, MicroTime());
addtohash(crc32, time(NULL)); // 64bit
addtohash(crc32, MicroTime()/13.37f);
addtohash(crc32, (10.0f-MicroTime())*1337.0f);
addtohash(crc32, (11130.0f-MicroTime())/1313137.0f);
endhash(crc32);
MicroTime을() 프로그램 시작부터 경과 마이크로 초를 반환합니다. 모든 가능한 유형에 addtohash()를 오버로드했습니다.
필자는 라이브러리가 아닌 솔루션을 사용하려고합니다. 어쨌든 아마 ~ 10 줄의 코드 일뿐입니다. 실제로 필요하지 않은 것 때문에 거대한 라이브러리를 설치하고 싶지는 않습니다. 더 관심이 있습니다. 함수 호출에서 사용하는 것보다 코드에서.
크로스 플랫폼은 어떻게되어야합니까? :) –
시드가 "좋은지"아닌지는 의사 랜덤 데이터를 사용하는 대상에 따라 다릅니다. PRNG가 다른 시간에 다른 데이터를 출력한다는 유일한 요구 사항이라면 시간을 사용하는 것이 좋습니다. 그러나 프로그램이 실행될 때마다 한 번 PRNG를 시드하려면 CryptGenRandom을 사용할 수도 있습니다. –
좋은 cryprographic rng에 시드가 내장되어 있어야합니다. 다른 RNG는 이것을 필요로하지 않습니다. –