wxString wxPdfUtility::GetUniqueId(const wxString& prefix) { wxString uid = (prefix.Length() <= 114) ? prefix : prefix.Left(114); wxDateTime ts; ts.SetToCurrent(); int q; int z; if (!ms_seeded) { ms_seeded = true; ms_s1 = ts.GetSecond() ^ (~ts.GetMillisecond()); if (ms_s1 == 0) ms_s1 = 1; ms_s2 = wxGetProcessId(); } MODMULT(53668, 40014, 12211, 2147483563L, ms_s1); MODMULT(52774, 40692, 3791, 2147483399L, ms_s2); z = ms_s1 - ms_s2; if (z < 1) { z += 2147483562; } uid += wxString::Format(wxT("%08x%05x"), ts.GetSecond(), ts.GetMillisecond()); uid += Double2String(z * 4.656613e-9,8); return uid; }
//-------------------------------------------------------------------- // LCG Zufallszahlengenerator // aus Bruce Schneier, Cryptographic Algorithms //-------------------------------------------------------------------- // LCG Zufallszahlengenerator double randLCG(void) { long q, z; MODMULT(53668, 40014, 12211, 2147483563L, s1) MODMULT(52774, 40692, 3791, 2147483399L, s2) z = s1 - s2; if (z < 1) z += 2147483562; return z * 4.656613e-10; }
PHPAPI double php_combined_lcg(TSRMLS_D) /* {{{ */ { php_int32 q; php_int32 z; if (!LCG(seeded)) { lcg_seed(TSRMLS_C); } MODMULT(53668, 40014, 12211, 2147483563L, LCG(s1)); MODMULT(52774, 40692, 3791, 2147483399L, LCG(s2)); z = LCG(s1) - LCG(s2); if (z < 1) { z += 2147483562; } return z * 4.656613e-10; }