2013-04-13 203 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] 
相关问题