Saya ingin angka acak 100000+, menurut saya numpy cocok untuk proyek saya berdasarkan kinerjanya bagus. Tapi saya ingin 4 tempat nomor acak berdasarkan pola di bawah ini,
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
Dalam kasus di atas 26 huruf kecil, 26 huruf kapital dan 10 angka sama dengan 62 huruf total dan mari kita ambil permutasi dan kombinasi,
Saya ingin 4 digit dari huruf-huruf itu jadi,
62 ^ 4 / 4! = 615680 (Combinations)
Jika saya mengambil 26 huruf kecil + 10 digit dan hasilnya adalah,
(26+10) ^ 4 / 4! = 69984 (Combinations)
Dari dua kasus tersebut, yang pertama adalah yang terbaik, Ini memberikan angka acak yang lebih baik, saya melakukan beberapa logika di sini,
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
Namun hitungan angka acaknya dibawah 100000, Karena hanya membutuhkan huruf + angka kecil saja
In [66]: len(set([binascii.b2a_hex(rand.randint(lo, hi, 2).tostring())[:4] for _ in xrange(100000)]))
Out[66]: 51210
Adakah yang menyarankan saya bagaimana menerapkan ini di numpy?
numpy.random.choice()
4-vektor dari alfabet, lalu''.join()
masing-masing? - person NPE   schedule 19.09.2014