2016-06-27 9 views
1

私は乱数のリストを印刷するのに複数のスレッドを見ましたが、私の特定の要件を持つものは見当たりませんでした。Python 3.4で重複した乱数のランダムなリストを生成

いくつかの間隔で乱数のリストを生成するコードを開発したいと思います。リストはランダムな長さだけで別の間隔でもあり、このリストに重複が必要です。私も1行でやりたい

私はrandom.sampleを使ってかなり良い試みをしましたが、サンプルには重複が含まれていませんし、リスト内の数字の範囲をリスト自体より大きくすることもできません。 (Egはそれは5つの数字の長いリストを生成することはできませんが、5を介して1より大きい数字で)

>> a = random.sample(range(10), random.randint(1,10,1)) 
>> print(a) 
[6, 3, 4, 2, 5, 7, 8] 

はありません重複の問題を取り除くために、長さの問題よりも大きい数字、私はこれを試みました、私は範囲がランダムにすることができない、または他の私はTypeError例外を取得:

>> a = [random.randint(1,20) for x in random.randrange(1,10)] 
>> print(a) 
    Traceback (most recent call last): 

     File "<ipython-input-258-b3a6b0409007>", line 1, in <module> 
     a = [random.randint(1,20) for x in random.randrange(1,10)] 

    TypeError: 'int' object is not iterable 

私は作成できない理由をあまりにもわからない:ここで

>> a = [random.randint(1,20) for x in range(1, 10)] 
>> print(a) 
[8, 7, 20, 20, 5, 18, 9, 3, 19] 

は、私は、ランダムな範囲のためにしようとしたバージョンですいくつかのintにランダムな範囲私は初心者なので、何かを見逃していると思います。

答えて

1

random.randrange(1,10)はエラーが示すように整数を返します。あなたはこのようなrange機能の上限としてそれを使用することができます。

a = [random.randint(1,20) for x in range(1, random.randrange(1,10))]

+0

ありがとうございました!私はrandrange()関数を誤解していました。私はrange()関数のように範囲をマップしたと思いました。 それでは、私がrandrange()を入れて、range関数内に別のrandint()を置くこととはどういう違いがありますか? – Destroxia

+0

実際には 'randint'を使うことができます。違いは 'randrange'に終点が含まれていないことです。この回答を確認してください:http://stackoverflow.com/a/3540456/2074794 – kaveh

関連する問題