8

私はPythonに非常に慣れていないので、ご容赦ください。特定の範囲内の整数の文字列をシャッフルするプログラムを実行したいと思いますが、その範囲内の各整数を入力する必要はありません。つまり、(1, 2, 3...100) と入力せずに、1 から 100 までの整数のリストをランダム化したいと考えています。

はい、同様の質問に対する他の回答を見てきましたが、すべてが特定の範囲内の 1 つの整数を求めているか、Python について回答されていないか、もっと複雑なものを求めています。ありがとう

4

2 に答える 2

12

range()と一緒に使用してlist()整数のリストを生成し、random.shuffle()そのリストに適用できます。

>>> lst = list(range(1,11))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> random.shuffle(lst)
>>> lst
[4, 5, 3, 9, 2, 10, 7, 1, 6, 8]

rangeモジュールビルトインのクラスに関するヘルプ:

class range(object)
 |  range(stop) -> range object
 |  range(start, stop[, step]) -> range object
 |
 |  Return an object that produces a sequence of integers from start (inclusive)
 |  to stop (exclusive) by step.  range(i, j) produces i, i+1, i+2, ..., j-1.
 |  start defaults to 0, and stop is omitted!  range(4) produces 0, 1, 2, 3.
 |  These are exactly the valid indices for a list of 4 elements.
 |  When step is given, it specifies the increment (or decrement).
于 2013-01-20T19:47:24.557 に答える
10

人口全体を特定の範囲内に収めたい場合は、@ Ashwini が提案したように、random.shuffle を使用できます

母集団のサブセットに関心がある場合は、 random.sampleの使用を楽しみにできます。

>>> random.sample(range(1,10),5)
[3, 5, 2, 6, 7]

これを使ってrandom.shuffleをシミュレートすることもできます

>>> random.sample(range(1,10),(10 - 1))
[4, 5, 9, 3, 2, 8, 6, 1, 7]

、 random.shuffle よりも random.sample を使用する利点は、イテレータで機能するため、

  • range()リストに変換する必要のない Python 3.X
  • Python 2、Xでは、使用できますxrange
  • 同じコードが Python 2.X と 3.X で動作可能
于 2013-01-20T19:58:36.887 に答える