This could become extremely prohibitive if you suppose you may be generating even a small fraction of all possible 7 digit numbers.

If you need to create a GUID or UUID, there are better ways to go about this if your constraint can be relaxed to your numbers having a very, very low chance of collision (and such modules exist for this purpose.)

If you absolutely must track these numbers persistently or over a long running process, I'd recommend using SQLite to store your numbers. In the simple table that stores your number, simply mark this column as unique. INSERTing them into the table will let SQLite to efficiently check to make sure this field value is unique . Failure to insert due to a DUPLICATE KEY error could be easily caught, and this would allow you to "try again."

Finally, if you must maintain your own "index" of assigned numbers, I'd recommend storing it in a Trie for efficient storage and fast inserts & lookup.


In reply to Re: Check randomly generated numbers have not been used before by perlfan
in thread Check randomly generated numbers have not been used before by R3search3R

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.