title: Generate alphanumeric random numbers in numpy
body: <p>I want random numbers 100000+, I found numpy is suitable for my project based on performance it is good. But I want 4 places random number based on below pattern,</p>
  
  <pre><code>'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
  </code></pre>
  
  <p>In the above case 26 small letters,26 capital letters and 10 digits equal to 62 total letters and let us take permutation and combinations,</p>
  
  <p>I want 4 digits from those letters so,</p>
  
  <pre><code>62 ^ 4 / 4! = 615680 (Combinations)
  </code></pre>
  
  <p>If I take  26 small letters + 10 digits and the output is,</p>
  
  <pre><code>(26+10) ^ 4 / 4! = 69984 (Combinations)
  </code></pre>
  
  <p>From those two cases first one is best, It provides better random numbers, I did some logic here,</p>
  
  <pre><code>from numpy.random.mtrand import RandomState
  import binascii
  lo = 1000000000000000
  hi = 999999999999999999
  In [65]: %timeit [ binascii.b2a_hex(rand.randint(lo, hi, 2).tostring())[:4] for _ in xrange(100000)]
  1 loops, best of 3: 272 ms per loop
  </code></pre>
  
  <p>But the random number count is below 100000, Because it only takes small lettes + digits</p>
  
  <pre><code>In [66]: len(set([binascii.b2a_hex(rand.randint(lo, hi, 2).tostring())[:4] for _ in xrange(100000)]))
  Out[66]: 51210
  </code></pre>
  
  <p>Any one suggest me how to implement this in numpy ?</p>