git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 1/2] compat: add a mkstemps() compatibility function

From
APAntriksh Pany <antriksh.pany@gmail.com>
Date
Jun 3, 2009, 15:59 UTC
Message-ID
<e6cd6cf90906030859m2725856cl77e210d87e261df0@mail.gmail.com>
In-Reply-To
<4A252381.9000103@viscovery.net>

Oh ok, didn't realize the sixth division was not used. In which case, we needn't have the sixth division.

Also, 62^5 compared to 2^32 still gives a ~ 21% probability of the fifth division becoming zero, fairly high perhaps.

The suggestion to change the code to
   ((uint64_t) tv.tv_usec) << 16)
might help here. This would still leave about a 1.4% chance of v
becoming zero, higher than (being pedantic!) what perfect randomness
would require. Livable. But (just curious), do we see any loss in
shifting a few more positions?
- Antriksh
On Tue, Jun 2, 2009 at 6:35 PM, Johannes Sixt <j.sixt@viscovery.net> wrote:
Show 18 quoted lines
> Antriksh Pany schrieb:
>> 2. tv_usec has a decimal value range of 0-999999  (10^6 usec make 1
>> sec). Which means that tv_usec fits completely in 20 bits (or less).
>> (tv_usec << 16) yields a number that fits completely in 36 bits (or
>> less). Max value of this number is 999999 * 2^16, or for convenience,
>> about M = 10^6 * 2^16. This number (in the range of 0 to M) goes on to
>> be divided by D=62^6. Also, M > D. Thus, there is about a  D / M * 100
>> ~ 87 % probability of the division M / D working out to be zero. i.e,
>> in 87% cases, the last division (v/= num_letters) will cause 'v' to
>> become 0.
>
> But this value (after the 6th division, mind you) is not used. v is used
> the last time after the 5th division; at this time it still carries enough
> randomness: 62^5 < 2^32.
>
> -- Hannes
>
>
Previous: Johannes SixtNext: David Aguilar
Message 5 of 6 in “compat: add a mkstemps() compatibility function”
  1. 1/2 compat: add a mkstemps() compatibility functionDavid Aguilar, May 28, 2009
  2. 2/2 diff: generate prettier filenames when using GIT_EXTERNAL_DIFFDavid Aguilar, May 28, 2009
  3. Antriksh PanyJun 2, 2009
  4. Johannes SixtJun 2, 2009
  5. Antriksh PanyJun 3, 2009
  6. David AguilarJun 3, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.