2013-04-13 243 views
-4

我需要編寫一個代碼,以隨機順序列出26個非重複數字0到25沒有奇怪的命令如洗牌它需要成爲begginer語言,即使結果代碼更長,低效率的生成一個隨機數的範圍

def f(): 
    a=[0]*26 
    for x in a: 
     b=randrange(0,26) 
     a[b]=randrange(0,26) 
    return(a) 
print(f()) 

^^^^我知道它不工作的權利

+0

如果你知道它不能正常工作,你有什麼措施來解決它?你有什麼問題? – martineau

+0

[Fisher-Yates](http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm)實現起來相當簡單。 – georg

+0

「沒有奇怪的命令,像洗牌,它需要begginer語言」這甚至意味着什麼?關於'random.shuffle'有什麼奇怪的地方?什麼是「初學者語言」?清晰的代碼是清晰的代碼,「我正在使用一個名爲'shuffle'的內置函數來清理列表」,這是清楚的。拼出一個過程的每一步並不意味着你讓事情變得更簡單。 –

回答

1

這是非常簡單的:

import random 
def f(): 
    a=[0]*26 
    count = 0 
    while count < 25: 
     r = random.randrange(0,26) 
     if r not in a: 
      a[count] = r 
      count += 1 
    return(a) 
print(f()) 

輸出例如:

[12, 9, 5, 25, 17, 11, 22, 2, 3, 23, 6, 8, 16, 13, 21, 7, 4, 1, 10, 24, 19, 18, 15, 20, 14, 0] 
相關問題