回答編集履歴

2

追記

2019/05/18 23:58

投稿

katoy
katoy

スコア22324

test CHANGED
@@ -70,8 +70,20 @@
70
70
 
71
71
 
72
72
 
73
+ while をつかっている例では、無限ループになってしまう場合があります。(200個の数値を得ようとした場合など)
74
+
75
+ sample を使っているでは、 sample(range(150, 186), 200) などとすると例外が発生します。(無限ループにはならない)
76
+
77
+ randint(150,185) と sample(range(150, 186),...) で 185 と 186 の指定の差にも注意が必要です. (range(150, 185) としていまうと、 185 が結果にふくまれなくなってしまいます。
78
+
79
+
80
+
73
81
  参考情報
74
82
 
75
83
  - Pythonでランダムな小数・整数を生成するrandom, randrange, randintなど
76
84
 
77
85
  [https://note.nkmk.me/python-random-randrange-randint/](https://note.nkmk.me/python-random-randrange-randint/)
86
+
87
+
88
+
89
+ ページ中で sample を検索するとよいです。

1

追記

2019/05/18 23:58

投稿

katoy
katoy

スコア22324

test CHANGED
@@ -35,3 +35,43 @@
35
35
  - 【Python3】内包表記まとめ
36
36
 
37
37
  [https://qiita.com/kennygt51/items/a89014ab85a068df69c5](https://qiita.com/kennygt51/items/a89014ab85a068df69c5)
38
+
39
+
40
+
41
+ 追記:
42
+
43
+ 上の実行例でわかるように set に場合は重複が除外されます。したがって、10 個の数値が取得できるとは限りません。
44
+
45
+ list の場合は 10 個の数値が得られますが、重複は除外されません。
46
+
47
+
48
+
49
+ 重複しない数値を10個つくりたいなら、こんなふうにしては?
50
+
51
+
52
+
53
+ ```python3
54
+
55
+ num_set = set()
56
+
57
+ while len(num_set) < 10:
58
+
59
+ num_set.add(random.randint(150,185))
60
+
61
+ print(num_set)
62
+
63
+
64
+
65
+ num_set = set(random.sample(range(150, 186), 10))
66
+
67
+ print(num_set)
68
+
69
+ ```
70
+
71
+
72
+
73
+ 参考情報
74
+
75
+ - Pythonでランダムな小数・整数を生成するrandom, randrange, randintなど
76
+
77
+ [https://note.nkmk.me/python-random-randrange-randint/](https://note.nkmk.me/python-random-randrange-randint/)