回答
要獲得一個隨機的3位數字:
from random import randint
randint(100, 999) # randint is inclusive at both ends
(假設你的真正用意三位數,而不是「高達三位數」。)
要使用的數字的任意數目:
from random import randint
def random_with_N_digits(n):
range_start = 10**(n-1)
range_end = (10**n)-1
return randint(range_start, range_end)
print random_with_N_digits(2)
print random_with_N_digits(3)
print random_with_N_digits(4)
輸出:
33
124
5127
請問0計數作爲一個可能的第一個數字?如果是這樣,那麼你需要random.randint(0,10**n-1)
。如果沒有,random.randint(10**(n-1),10**n-1)
。如果零是從不允許允許,那麼你必須明確拒絕其中有零的數字,或者繪製n
random.randint(1,9)
數字。
另外:有趣的是,randint(a,b)
使用了一些非pythonic「索引」來獲得一個隨機數a <= n <= b
。有人可能預計它會像range
那樣工作,併產生一個隨機數a <= n < b
。 (注意關閉的上部井段。)
鑑於在評論有關randrange
的答覆,注意,這些可以用清潔劑random.randrange(0,10**n)
,random.randrange(10**(n-1),10**n)
和random.randrange(1,10)
所取代。
@Andrew:'a <= n <= b'也讓我吃驚。我不喜歡在我的代碼中加入額外的'-1'。 :-) – RichieHindle 2010-04-20 07:53:46
@Andrew - 有趣的是,'randint'的Python代碼(它在Lib/random.py中)實際上只是調用'randrange(a,b + 1)'! – 2010-04-20 07:55:38
是的,'randrange'應該是新代碼的首選。 – bobince 2010-04-20 08:01:10
你可以寫你自己的一些功能做你想要什麼:
import random
def randomDigits(digits):
lower = 10**(digits-1)
upper = 10**digits - 1
return random.randint(lower, upper)
基本上,10**(digits-1)
爲您提供了最小{}位數字位數字,並10**digits - 1
給你最大的{}位數字位數字(這恰好是最小的{digit + 1} -digit減1!)。然後我們從這個範圍取一個隨機整數。
如果你想把它當作一個字符串(例如,一個10位數的電話號碼),您可以使用此:
n = 10
''.join(["%s" % randint(0, 9) for num in range(0, n)])
我真的很喜歡RichieHindle的答案,但是我很喜歡這個問題作爲一個練習。下面是使用字符串:)
import random
first = random.randint(1,9)
first = str(first)
n = 5
nrs = [str(random.randrange(10)) for i in range(n-1)]
for i in range(len(nrs)) :
first += str(nrs[i])
print str(first)
如果你不想記住所有的不同看似隨意的命令蠻力實現(像我一樣),你可以隨時使用:
import random
Numbers = range(1, 10)
RandomNumber = random.choice(Numbers)
print(RandomNumber)
#returns a number
從official documentation, sample()方法是否適合於此目的?
import random
def random_digits(n):
num = range(0, 10)
lst = random.sample(num, n)
print str(lst).strip('[]')
輸出:
>>>random_digits(5)
2, 5, 1, 0, 4
您可以創建誰消耗爲int的列表功能,在字符串來連接和流延改造也再次詮釋,這樣的事情:
import random
def generate_random_number(length):
return int(''.join([str(random.randint(0,10)) for _ in range(length)]))
如果你需要一個3位數的數字,並且希望001-099是有效的數字,你應該仍然使用randrange/randint,因爲它比其他選項更快。轉換爲字符串時只需添加前面的零。
import random
num = random.randrange(1, 10**3)
num_with_zeros = '{:03}'.format(num)
另外,如果你不想隨機數另存爲你可以做它作爲一個oneliner一個int:
'{:03}'.format(random.randrange(1, 10**3))
蟒蛇3.6+只有oneliner:
f'{random.randrange(1, 10**3):03}'
以上示例輸出爲:
- '026'
- '255'
- '512'
- 1. 生成具有隨機行長度的隨機二維數組
- 2. 生成函數與蟒蛇
- 3. 如何隨機對蟒蛇
- 4. 如何從短隨機數生成更長的隨機數?
- 5. 生成隨機長度的零
- 6. 蟒蛇random.shuffle的隨機性
- 7. 隨機使用Varibles? (蟒蛇)
- 8. 蟒蛇隨機歪斜
- 9. 生成和蟒蛇
- 10. 生成隨機的,固定長度的字節數組在Go
- 11. 調整文本框的Tkinter蟒蛇寬度爲隨機數
- 12. 生成一個固定長度的隨機數
- 13. 更新的具體數據〜蟒蛇
- 14. 形成與蟒蛇
- 15. 如何在Go中生成一個固定長度的隨機數?
- 16. 如何生成一個具有小數位的隨機數
- 17. 生成隨機數
- 18. 隨機數生成
- 19. 生成隨機數
- 20. 如何在Python中生成多個隨機數到足夠的「隨機」程度
- 21. 蟒蛇延長
- 22. 生成10隨機矩陣0和具體數量1
- 23. 如何在clojure中隨機生成一個長整數
- 24. 蟒蛇:生成柱狀圖
- 25. 蟒蛇生成器轉換
- 26. 隨機數生成機制
- 27. 隨機密碼生成與
- 28. 生成一個字符串的隨機固定長度排列
- 29. 如何在python中生成高度一致的隨機數字?
- 30. 如何隨機生成隨機數的canvas.drawColor
有了這個解決方案,您將消除從隨機池10 **(N-1)數字 – 2012-02-03 13:29:15
@NicolaeSurdu:是的,這就是爲什麼我說*假設你真的意味着三位數字,而不是「最多三位數」。* – RichieHindle 2012-02-03 15:39:15
037這是一個3位數字,小於100 :)。我正是這個意思。但是,對於非彩票申請,你的解決方案就好了) – 2012-02-07 15:12:56