2012-08-28 69 views
7

我需要用隨機數(10 5數字)生成一個大數組(或列表)。我是想這樣的:隨機數與python大數組

vet = random.sample(range(10),100000) 

但是當我嘗試運行:

vet = random.sample(range(10),10000) 

文件 「/usr/lib/python2.7/random.py」,線320,在樣品 加薪ValueError(「樣本大於羣體」) ValueError:樣本大於羣體

任何解決方案?

tkns

+6

考慮到列表的大小,你可能要考慮像[numpy的]數組庫(http://numpy.scipy.org/) :'進口numpy; vet = numpy.random.randint(0,10,10000)' – Snowball

回答

19

你想要的是

[random.random() for _ in xrange(100000)] 

random module documentation

random.sample(population, k) Return a k length list of unique elements chosen from the population sequence. Used for random sampling without replacement.

所以當呼叫random.sample(range(10), 100000)你試圖在長度爲10的序列中提取100000個獨特的元素,這顯然無法工作。

注意

  • random.random()返回0之間[浮動值; 1)
  • random.randrange([start], stop[, step])返回從序列range([start], stop[, step])
  • random.randint(a, b)在[A返回一個整數值的隨機元件; B]
  • 使用random.sample時,平等len(population) >= k必須持有
8

我覺得你這樣的事情之後是:

vet = [random.randint(1,10) for _ in range(100000)]