嘿,我有一個課堂練習,我堅持,並會感謝任何幫助。該程序應該隨機選擇一個1-5之間的數字並循環,直到所有數字被選中。然後它應該重複約100次,以獲得平均得到所有五個數字所需的次數。我知道如何使用random.int,只是不知道如何編寫一個循環,當所有5個數字都被選中時它會中斷。任何形式的幫助都會很棒。謝謝Python隨機數循環
0
A
回答
1
這將做到這一點:
from random import randint
a = []
for _ in range(100):
b = 0
c = set()
while len(c) < 5:
c.add(randint(1, 5))
b += 1
a.append(b)
d = round(sum(a)/len(a))
print("{}\nAverage loops: {}".format(c, d))
記錄在案版本:
# Import the `randint` function from `random`.
from random import randint
# This will hold the results that will later be used to calculate the average.
a = []
# This loops 100 times (to get data for a calculation of the average).
for _ in range(100):
# This will be the number of times the while-loop loops.
b = 0
# This is a set to hold the choices of `random.randint`.
# When it reaches 5 items, all numbers from 1-5 have been found.
c = set()
# Loop while the length of the set is less than 5.
while len(c) < 5:
# Add a new random number to the set,
# If the number is already there, nothing happens.
c.add(randint(1, 5))
# Record a completed iteration of the while-loop.
b += 1
# Add the number of while-loop loops to `a`.
a.append(b)
# The average is calculated by dividing the sum of `a` by the length of `a`.
# It is then rounded to the nearest integer.
d = round(sum(a)/len(a))
# Print the results.
print("{}\nAverage loops: {}".format(c, d))
輸出示例:
{1, 2, 3, 4, 5}
Average loops: 12
{1, 2, 3, 4, 5}
Average loops: 10
{1, 2, 3, 4, 5}
Average loops: 9
2
我建議你使用Set。每次達到1-5之間的值時,將其放入您的設置中,然後當設置的大小爲5時,打破循環。
1
我只是做一個while循環,它產生一個1-5之間的隨機數,直到它得到第一個數字t,記錄它所花費的嘗試次數,記錄它所花費的嘗試次數。與下一個數字,當你完成後,找到平均花了多少次嘗試。
例子:
total = 0
for i in range(100):
for n in range(1,6):
generatedNum = 0
while generatedNum != n:
#generate random number
total += 1
print (total/100)
0
這裏是另一種方式,我們可以使用:導致
import random
total = {1:0,2:0,3:0,4:0,5:0}
for k in xrange(100): #outter loop
trial = {}
n = 0 #counter
while n<5:
sample = random.randint(1,5) #sample
try:
trial[sample] += 1
except:
n += 1
trial[sample] = 1
for i in xrange(1,6): #accumulate the results
total[i] += trial[i]
:
>>> total
{1: 221, 2: 255, 3: 246, 4: 213, 5: 243}
相關問題
- 1. Python循環隨機數
- 2. 隨機數循環
- 3. 隨機整數循環
- 4. 循環隨機次數java
- 5. Java循環和隨機數
- 6. 隨機CountDownTimer循環
- 7. last.fm api - 隨機/隨機foreach循環
- 8. PHP循環隨機增加?
- 9. 無循環的隨機塊
- 10. 隨機循環的Django
- 11. 隨機int無限循環
- 12. 雙循環隨機抽樣
- 13. java:在循環中生成隨機數
- 14. 如何使數組的隨機循環
- 15. 隨機數源,循環和存儲
- 16. 在while循環中計數/隨機int
- 17. 使int在循環中隨機計數?
- 18. 每次在javascript循環上隨機數
- 19. while循環中的隨機數
- 20. 循環後的數組隨機結果
- 21. 生成沒有循環的隨機數
- 22. Javascript隨機數循環不起作用
- 23. 跟蹤隨機數並停止循環
- 24. while循環中的隨機數
- 25. 生成循環的隨機數
- 26. 無限循環顯示隨機數js
- 27. Javascript隨機數循環未定義onclick
- 28. C++隨機數發生器的循環
- 29. while循環。隨機數出現
- 30. 隨機數和while循環問題
很好的提示。實際上,在這裏你甚至不需要'休息'(有些新手可能還不知道),只需在'while'時用'length <5'作爲條件。' – abarnert
而不是舊的,過時的套餐'模塊,爲什麼不使用內置'set'? – user2357112
對不起,我已經鏈接了一個自2.6以來已棄用的類。這是正確的[set](http://docs.python.org/2/library/stdtypes.html#set) – Azeq