2016-04-12 13 views
-1

私は基本的なPythonプログラミングクラスに属しています。 ハードコードされた番号ではなく、リストの長さを使用して適切な範囲内のインデックス値iとjを生成する必要があります。リストの要素がソートされた順序左から一番高いところへ。リストをPythonでシャッフルしますか?

は、これまでのところ私が持っている:

from random import* 

def main(): 
    LENGTH= 25 
    shuffleList= 1000 
    numList= [0] * LENGTH 

    for num in range(0,len(numList)): 
     rand= randint(-100,100) 
     numList[num] += rand 
    print("List before shuffling:") 
    print numList 

    for i in range(0, len(numList)): 
     min = i 
     shuffleList += 1 

    for j in range(-1, len(numList)): 
     shuffleList +=1 

は、今私はちょうどこの時点から何をすべきか見当がつかない。ありがとう。

+0

してください、適切な字下げなくても正常に –

+0

PythonコードをあなたのコードをインデントPythonではありません。語彙的に話すことはありません。だからあなたが投稿したものを理解する方法はありません。とにかく 'random.shuffle'を見たいかもしれません。 –

答えて

0
import numpy 
LENGTH=25 
random_list = numpy.random.randint(-100,100,LENGTH) #Generate random list 
for i in range(random_list): # for each index in list as i 
    for j in range(random_list): # for each index in list as j 
     if lrandom_listst[i] > random_list[j]: # if we should swap 
      random_list[i],random_list[j] = random_list[j],random_list[i] # do swap 

これは、リストをソートするために非常に良いアルゴリズムではありません...多分あなたはrandom.shuffleを使用したいポイント

+0

はい、彼は後でより良いアルゴリズムを学ぶと言いますが、今のところこれを使用します! – mcb2

0

私は、あなたは、単に左側が右側に上昇することを意味し、「より規則」であるとします。簡単な方法は、2つのランダムなインデックスを選択して比較し、左手側が高い場合に切り替えることです。

私はこの機能をかなり圧縮することができますが、あなたのより良い理解を与えるために、私はそのより詳細な形でそれを左:

import random 

def check_sort(items, predicate=lambda x, y: x <= y): 
    return all(predicate(items[i],items[i+1]) for i in range(len(items)-1)) 

numbers = [i for i in range(0, 100)] 
random.shuffle(numbers) 
changes = 0 
generations = 0 
while not check_sort(numbers): 
    generations += 1 
    x, y = random.randint(0, len(numbers) - 1), random.randint(0, len(numbers) - 1) 
    x, y = (x, y) if x > y else (y, x) 
    if numbers[x] < numbers[y]: 
     changes += 1 
     tmp = numbers[y] 
     numbers[y] = numbers[x] 
     numbers[x] = tmp 

print("Generations: {}\nChanges: {}".format(generations, changes)) 
関連する問題