Tam sayılar rasgele liste oluşturmak Python
Test amaçlı tamsayı rastgele bir liste oluşturmak istiyorum. Sayıları dağılımı önemli değildir. Kont olan tek şeyzaman. Oluşturmak rasgele sayılar, zaman alıcı bir görev olduğunu biliyorum, ama daha iyi bir yolu olmalı.
İşte benim geçerli çözüm:
import random
import timeit
# random lists from [0-999] interval
print [random.randint(0,1000) for r in xrange(10)] # v1
print [random.choice([i for i in xrange(1000)]) for r in xrange(10)] # v2
# measurement:
t1 = timeit.Timer('[random.randint(0,1000) for r in xrange(10000)]','import random') # v1
t2 = timeit.Timer('random.sample(range(1000), 10000)','import random') # v2
print t1.timeit(1000)/1000
print t2.timeit(1000)/1000
v2 v1 den daha hızlı ama bu kadar büyük çaplı bir işe yaramıyor. Aşağıdaki hata verir: 'ValueError: örnek nüfusundan daha büyük '
Bu ölçekte çalışan, hızlı ve verimli bir çözüm biliyor musunuz?
Düzenleme:
Andrew: 0.000290962934494
gnibbler: 0.0058455221653
KennyTM: 0.00219276118279
NumPy geldim, gördüm, ele geçirdi
Teşekkür ederim!
CEVAP
Ne istediğinizi, ama numpy.random.randint kullanmak istiyorsunuz tam olarak net değil:
import numpy.random as nprnd
t1 = timeit.Timer('[random.randint(0,1000) for r in xrange(10000)]','import random') # v1
### change v2 so that it picks numbers in (0,10000) and thus runs...
t2 = timeit.Timer('random.sample(range(10000), 10000)','import random') # v2
t3 = timeit.Timer('nprnd.randint(1000, size=10000)','import numpy.random as nprnd') # v3
print t1.timeit(1000)/1000
print t2.timeit(1000)/1000
print t3.timeit(1000)/1000
benim makine verir
0.0233682730198
0.00781716918945
0.000147947072983
Randint olduğunu unutmayınçokrastgele farklı.örnek (sipariş için çalışmak durumda kaldım değiştirmek için 1,000 10,000 gibi bir yorumcunun belirttiği -- Eğer gerçekten istiyorsan onlardan 0 1.000 olabilir böl 10). Ve eğer gerçekten o zaman ne alıyorsanız umurumda değil eğer sen ya da senin sorunu çok iyi anladım, ya da o kaba geldiyse özür dilerim rasgele sayılar ile... mümkün
Python: liste üreteci ile bir sözlük o...
Python - başlangıç kapasitesi ile bir ...
Python boş bir liste oluşturmak...
Yineleme yok ile oluşturmak rasgele sa...
Nasıl alfa-sayısal rasgele bir dize ol...