回答編集履歴

3

微修正

2020/04/30 07:44

投稿

episteme
episteme

スコア16612

test CHANGED
@@ -23,8 +23,6 @@
23
23
  #include <set>
24
24
 
25
25
  #include <random>
26
-
27
- #include <algorithm>
28
26
 
29
27
 
30
28
 

2

追記

2020/04/30 07:43

投稿

episteme
episteme

スコア16612

test CHANGED
@@ -11,3 +11,77 @@
11
11
 
12
12
 
13
13
  [追記] **とんでもなく勘違いしてました。そっと閉じてください** orz
14
+
15
+
16
+
17
+ で、書いてみた.
18
+
19
+ ```C++
20
+
21
+ #include <iostream>
22
+
23
+ #include <set>
24
+
25
+ #include <random>
26
+
27
+ #include <algorithm>
28
+
29
+
30
+
31
+ std::set<int> random_sample(int m, int n) {
32
+
33
+ if ( m == 0 ) {
34
+
35
+ return std::set<int>();
36
+
37
+ } else {
38
+
39
+ std::set<int> S = random_sample(m-1, n-1);
40
+
41
+ std::random_device rnd;
42
+
43
+ std::uniform_int_distribution<> dist(1,n);
44
+
45
+ int i = dist(rnd);
46
+
47
+ if ( S.find(i) != S.end() ) {
48
+
49
+ S.insert(n);
50
+
51
+ } else {
52
+
53
+ S.insert(i);
54
+
55
+ }
56
+
57
+ return S;
58
+
59
+ }
60
+
61
+ }
62
+
63
+
64
+
65
+ int main() {
66
+
67
+ int hist[10];
68
+
69
+ std::fill_n(hist, 10, 0);
70
+
71
+ for ( int i = 0; i < 10000; ++i ) {
72
+
73
+ for ( int item : random_sample(3, 10)) { ++hist[item-1]; }
74
+
75
+ }
76
+
77
+ for ( int item : hist ) {
78
+
79
+ std::cout << item << ' ';
80
+
81
+ }
82
+
83
+ std::cout << std::endl;
84
+
85
+ }
86
+
87
+ ```

1

追記

2020/04/30 07:20

投稿

episteme
episteme

スコア16612

test CHANGED
@@ -7,3 +7,7 @@
7
7
 
8
8
 
9
9
  ...だから S には m個の 1~n が重複なく現れる。
10
+
11
+
12
+
13
+ [追記] **とんでもなく勘違いしてました。そっと閉じてください** orz