回答編集履歴
2
最小限の修正の追加
answer
CHANGED
@@ -119,4 +119,40 @@
|
|
119
119
|
return 0;
|
120
120
|
}
|
121
121
|
|
122
|
+
```
|
123
|
+
# 追記(最小限の修正)
|
124
|
+
ご質問のコードだと、平行線の間隔が1, 棒の長さが0.5になりますね。
|
125
|
+
```C
|
126
|
+
#include <math.h>
|
127
|
+
#include <stdio.h>
|
128
|
+
#include <stdlib.h>
|
129
|
+
#include <time.h>
|
130
|
+
#define pi 3.141592
|
131
|
+
int main(void)
|
132
|
+
{
|
133
|
+
int m = 1000;
|
134
|
+
int i, j;
|
135
|
+
srand((unsigned int)time(NULL));
|
136
|
+
int randam[5][1000] = { 0 };
|
137
|
+
for (i = 0; i < 5; i++) {
|
138
|
+
for (j = 0; j < m; j++) {
|
139
|
+
randam[i][j] = rand();
|
140
|
+
}
|
141
|
+
}
|
142
|
+
|
143
|
+
for (i = 0; i < 5; i++) {
|
144
|
+
int num = 0;
|
145
|
+
for (j = 0; j < m; j++) {
|
146
|
+
double x, y;
|
147
|
+
x = (float)randam[i][j] / (RAND_MAX + 1.0); //0~1の範囲の小数点乱数
|
148
|
+
y = x + 0.5 * sin(((float)randam[i][m - j]) / (RAND_MAX + 1.0) * 2 * pi);
|
149
|
+
|
150
|
+
if (y <= 0 || 1 <= y) {
|
151
|
+
num++;
|
152
|
+
}
|
153
|
+
}
|
154
|
+
printf("result%d :%e\n", i + 1, m / (double)num);
|
155
|
+
}
|
156
|
+
return 0;
|
157
|
+
}
|
122
158
|
```
|
1
#define _USE_MATH_DEFINES追加
answer
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
- ``num``は試行するたびに0に初期化しなければなりません。
|
7
7
|
## コード
|
8
8
|
```C
|
9
|
+
#define _USE_MATH_DEFINES
|
9
10
|
#include <math.h>
|
10
11
|
#include <stdio.h>
|
11
12
|
#include <stdlib.h>
|
@@ -54,6 +55,7 @@
|
|
54
55
|
|
55
56
|
# 円周率を使用しない例
|
56
57
|
```C
|
58
|
+
#define _USE_MATH_DEFINES
|
57
59
|
#include <math.h>
|
58
60
|
#include <stdio.h>
|
59
61
|
#include <stdlib.h>
|