ページへ戻る
印刷
Python/リストをランダムに並べ替える
をテンプレートにして作成 ::
NJF Wiki
xpwiki
:Python/リストをランダムに並べ替える をテンプレートにして作成
開始行:
*元のリストを変更してランダムに並べ替える
元のリストを変更してランダムに並べ替えるには、random.shuf...
import random
randomList = [0,1,2]
random.shuffle(randomList)
print(randomList)
結果
[1, 0, 2]
など。
もとのリストが変更されていることに注意して下さい。
もとのリストを変更せずに新たにランダムなリストを作るには...
*元のリストを変更せず、ランダムに並び替えられたリストを新...
random.sample()を使います。このメソッドは好きな要素数のラ...
import random
randomList = [0,1,2]
newRandomList = random.sample(randomList,len(randomList))
print(newRandomList)
結果
[1, 2, 0]
など。
*よくあるサンプルは使わないのが無難
「配列 ランダム 並び替え」などでインターネット検索すると...
randomList = [0,1,2]
listLen=len(randomList)
for i in range(listLen):
a = randomList[i]
j = random.randrange(0,listLen)
randomList[i] = randomList[j]
randomList[j] = a
つまり、配列から順に要素を選び、次にランダムに要素を一つ...
これは結果がかなりかたよります。
実際、このアルゴリズムで100,000回ランダムな(のはず)入れ...
0,2,1 18651
0,1,2 14885
2,1,0 14889
1,2,0 18359
2,0,1 14742
1,0,2 18474
となり、明らかに14800ぐらいのものと、18500ぐらいのものに...
これは[[こちらの記事:http://nmi.jp/archives/541]]で指摘さ...
たとえば3つのものの並べ替えの結果は3!=6通りですが、上のア...
27は6で割り切れませんから、かならず上のアルゴリズムはそれ...
今は長さ3の配列ですが、配列の長さが大きくなるにつれて不均...
よって、プログラマの意図しない結果がもたらされる可能性が...
pythonにはrandom.shuffleがあるのですから、わざわざ手間を...
random.shuffleで同じように100,000回実行してみると結果は、
0,2,1 16597
0,1,2 16750
2,1,0 16986
1,2,0 16579
2,0,1 16564
1,0,2 16524
といったものになり、均等に並び替えられていることが分かり...
終了行:
*元のリストを変更してランダムに並べ替える
元のリストを変更してランダムに並べ替えるには、random.shuf...
import random
randomList = [0,1,2]
random.shuffle(randomList)
print(randomList)
結果
[1, 0, 2]
など。
もとのリストが変更されていることに注意して下さい。
もとのリストを変更せずに新たにランダムなリストを作るには...
*元のリストを変更せず、ランダムに並び替えられたリストを新...
random.sample()を使います。このメソッドは好きな要素数のラ...
import random
randomList = [0,1,2]
newRandomList = random.sample(randomList,len(randomList))
print(newRandomList)
結果
[1, 2, 0]
など。
*よくあるサンプルは使わないのが無難
「配列 ランダム 並び替え」などでインターネット検索すると...
randomList = [0,1,2]
listLen=len(randomList)
for i in range(listLen):
a = randomList[i]
j = random.randrange(0,listLen)
randomList[i] = randomList[j]
randomList[j] = a
つまり、配列から順に要素を選び、次にランダムに要素を一つ...
これは結果がかなりかたよります。
実際、このアルゴリズムで100,000回ランダムな(のはず)入れ...
0,2,1 18651
0,1,2 14885
2,1,0 14889
1,2,0 18359
2,0,1 14742
1,0,2 18474
となり、明らかに14800ぐらいのものと、18500ぐらいのものに...
これは[[こちらの記事:http://nmi.jp/archives/541]]で指摘さ...
たとえば3つのものの並べ替えの結果は3!=6通りですが、上のア...
27は6で割り切れませんから、かならず上のアルゴリズムはそれ...
今は長さ3の配列ですが、配列の長さが大きくなるにつれて不均...
よって、プログラマの意図しない結果がもたらされる可能性が...
pythonにはrandom.shuffleがあるのですから、わざわざ手間を...
random.shuffleで同じように100,000回実行してみると結果は、
0,2,1 16597
0,1,2 16750
2,1,0 16986
1,2,0 16579
2,0,1 16564
1,0,2 16524
といったものになり、均等に並び替えられていることが分かり...
ページ名: