質問編集履歴
2
ファイルポインタのNULLチェックを入れました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -134,6 +134,17 @@
|
|
134
134
|
|
135
135
|
fp = fopen(argv[1],"r");
|
136
136
|
fp1 = fopen(argv[2],"r");
|
137
|
+
|
138
|
+
if(fp == NULL)
|
139
|
+
printf("fp:cannnot open file\n");
|
140
|
+
else
|
141
|
+
printf("fp:open file\n");
|
142
|
+
|
143
|
+
if(fp1 == NULL)
|
144
|
+
printf("fp1:cannnot open file\n");
|
145
|
+
else
|
146
|
+
printf("fp1:open file\n");
|
147
|
+
|
137
148
|
|
138
149
|
iter = 0;
|
139
150
|
flag = 0;
|
@@ -187,25 +198,7 @@
|
|
187
198
|
S4r1[i] += pow((double)pwr1, 4.0);
|
188
199
|
S4i1[i] += pow((double)pwi1, 4.0);
|
189
200
|
}
|
190
|
-
|
191
|
-
|
201
|
+
|
192
|
-
{
|
193
|
-
pwr2 = ar2[i];
|
194
|
-
pwi2 = ai2[i];
|
195
|
-
|
196
|
-
S1r2[i] += (double)pwr2;
|
197
|
-
S1i2[i] += (double)pwi2;
|
198
|
-
|
199
|
-
S2r2[i] += pow((double)pwr2, 2.0);
|
200
|
-
S2i2[i] += pow((double)pwi2, 2.0);
|
201
|
-
|
202
|
-
S3r2[i] += pow((double)pwr2, 3.0);
|
203
|
-
S3i2[i] += pow((double)pwi2, 3.0);
|
204
|
-
|
205
|
-
S4r2[i] += pow((double)pwr2, 4.0);
|
206
|
-
S4i2[i] += pow((double)pwi2, 4.0);
|
207
|
-
}
|
208
|
-
|
209
202
|
dcnt++;
|
210
203
|
|
211
204
|
}
|
1
コードを文字数制限ギリギリまで可能な限り載せました。検証に必要なデータを作るためのコードも載せました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,8 +1,4 @@
|
|
1
1
|
### 実現したいこと
|
2
|
-
|
3
|
-
c言語のメモリの動的確保について
|
4
|
-
### 前提
|
5
|
-
|
6
2
|
c言語のmallocによるメモリの動的確保について、気になることがあり質問させていただきます。
|
7
3
|
質問としては、mallocを使いすぎることでメモリを確保する際にmalloc同士で干渉などを起こすことがあるのでしょうか?
|
8
4
|
といのも、以下のコードでは配列を返す自作関数内でmallocを用いてメモリを動的に確保しており、main関数内ではその自作関数を計11回呼び出しています。このプログラムを実行するとコンパイルはできるのですが、実行すると何度やってもセグメンテーションエラーになり、実行できませんでした。しかし、mallocを使っている関数を一部コメントアウトし、main関数内でもコメントアウトした関数の呼び出し部をコメントアウトして実行すると、エラーにならず実行できました。その後、コメントアウトを解除して実行すると今度はセグメンテーションエラーにならずに実行できました。
|
@@ -14,30 +10,27 @@
|
|
14
10
|
#include <stdio.h>
|
15
11
|
#include <stdlib.h>
|
16
12
|
#include <math.h>
|
17
|
-
#include <time.h>
|
18
13
|
#include <string.h>
|
14
|
+
|
15
|
+
#define N 1024
|
19
16
|
|
20
17
|
int fft1();
|
21
18
|
int window_func();
|
22
|
-
int cmpnum();
|
23
19
|
|
24
20
|
void swap(float *x, float *y);
|
25
21
|
|
26
|
-
double* freq(i
|
22
|
+
double* freq(void);
|
27
|
-
double* CalcPower(double data[]
|
23
|
+
double* CalcPower(double data[]);
|
28
|
-
double Threshold_kurtosis(double M[], int N);
|
29
|
-
double Threshold_crossfreq(double median, double sub[], int num);
|
30
|
-
double* Kurtosis(double a[], double b[], double c[], double d[]
|
24
|
+
double* Kurtosis(double a[], double b[], double c[], double d[]);
|
31
|
-
|
32
|
-
|
25
|
+
|
33
|
-
double GetRandom(int min, int max);
|
34
|
-
double pulse(int frame);
|
35
26
|
|
36
27
|
int main(int argc,const char *argv[])
|
37
28
|
{
|
38
|
-
int N = 1024;
|
39
29
|
int i, j, k, n, n_frame, iter, flag;
|
40
|
-
|
30
|
+
int n_frame = 2929;
|
31
|
+
|
32
|
+
char datar[256], datai[256];
|
33
|
+
|
41
34
|
float ar1[N], ai1[N], ar2[N], ai2[N];
|
42
35
|
|
43
36
|
double pwr1, pwi1, pwr2, pwi2;
|
@@ -46,12 +39,12 @@
|
|
46
39
|
|
47
40
|
double S1r1[N], S2r1[N], S3r1[N], S4r1[N], S6r1[N];
|
48
41
|
double S1i1[N], S2i1[N], S3i1[N], S4i1[N];
|
49
|
-
double Myu1r1[N], Myu2r1[N], Myu3r1[N], Myu4r1[N]
|
42
|
+
double Myu1r1[N], Myu2r1[N], Myu3r1[N], Myu4r1[N];
|
50
43
|
double Myu1i1[N], Myu2i1[N], Myu3i1[N], Myu4i1[N];
|
51
44
|
|
52
45
|
double S1r2[N], S2r2[N], S3r2[N], S4r2[N], S6r2[N];
|
53
46
|
double S1i2[N], S2i2[N], S3i2[N], S4i2[N];
|
54
|
-
double Myu1r2[N], Myu2r2[N], Myu3r2[N], Myu4r2[N]
|
47
|
+
double Myu1r2[N], Myu2r2[N], Myu3r2[N], Myu4r2[N];
|
55
48
|
double Myu1i2[N], Myu2i2[N], Myu3i2[N], Myu4i2[N];
|
56
49
|
|
57
50
|
double sub_Myu1r[N], sub_Myu2r[N], sub_Myu3r[N], sub_Myu4r[N];
|
@@ -59,8 +52,7 @@
|
|
59
52
|
|
60
53
|
double Myu21[N], Myu22[N], sub_Myu2[N];
|
61
54
|
double sub_myu2[N], b[N], h[N], h1[N];
|
62
|
-
double median, median1;
|
63
|
-
double d[N], d1[N]
|
55
|
+
double d[N], d1[N];
|
64
56
|
double sub_d[N];
|
65
57
|
|
66
58
|
double sub_d_neighbor[N], sub_d_neighbor1[N];
|
@@ -68,25 +60,23 @@
|
|
68
60
|
|
69
61
|
double modi_Myu2_freq[N];
|
70
62
|
|
71
|
-
double Mr[N], Mi[N], Ma[N], Mb[N], Mc[N];
|
72
|
-
double Fr[N], Fi[N];
|
73
|
-
double sum_kr, sum_ki, sum_kc;
|
74
|
-
double s_k, s_kr, s_ki, s_ka, s_kb, s_kc;
|
75
|
-
double br[N], bi[N], ba[N], bb[N], qr[N], qa[N];
|
76
|
-
double xr[N], xi[N], xa[N], xb[N], qi[N], qb[N];
|
77
|
-
|
78
|
-
double modi_Myu2_kur1[N];
|
79
|
-
double modi_Myu2_kur2[N];
|
80
|
-
|
81
|
-
double com[N];
|
82
|
-
double modi_Myu2_com[N];
|
83
|
-
|
84
63
|
double* fq = NULL;
|
85
64
|
|
86
65
|
double* Kr = NULL;
|
87
66
|
double* Ki = NULL;
|
88
67
|
double* Ka = NULL;
|
89
68
|
double* Kb = NULL;
|
69
|
+
|
70
|
+
double Mr[N], Mi[N], Ma[N], Mb[N];
|
71
|
+
double Fr[N], Fi[N];
|
72
|
+
double br[N], bi[N], ba[N], bb[N], qr[N], qa[N];
|
73
|
+
double xr[N], xi[N], xa[N], xb[N], qi[N], qb[N];
|
74
|
+
|
75
|
+
double modi_Myu2_kur1[N];
|
76
|
+
double modi_Myu2_kur2[N];
|
77
|
+
|
78
|
+
double com[N];
|
79
|
+
double modi_Myu2_com[N];
|
90
80
|
|
91
81
|
double* Myu21_power = NULL;
|
92
82
|
double* sub_Myu2_power = NULL;
|
@@ -94,27 +84,171 @@
|
|
94
84
|
double* modi_power_kur1 = NULL;
|
95
85
|
double* modi_power_kur2 = NULL;
|
96
86
|
double* modi_power_freq = NULL;
|
97
|
-
|
87
|
+
|
98
|
-
FILE *fp, *fp1
|
88
|
+
FILE *fp, *fp1;
|
89
|
+
|
90
|
+
for(i = 0; i < N; i++)
|
91
|
+
{
|
92
|
+
ar1[i] = 0.0;
|
93
|
+
ai1[i] = 0.0;
|
94
|
+
ar2[i] = 0.0;
|
95
|
+
ai2[i] = 0.0;
|
96
|
+
|
97
|
+
Myu21[i] = 0.0;
|
98
|
+
Myu22[i] = 0.0;
|
99
|
+
|
100
|
+
S1r1[i] = 0.0;
|
101
|
+
S1i1[i] = 0.0;
|
102
|
+
S2r1[i] = 0.0;
|
103
|
+
S2i1[i] = 0.0;
|
104
|
+
S3r1[i] = 0.0;
|
105
|
+
S3i1[i] = 0.0;
|
106
|
+
S4r1[i] = 0.0;
|
107
|
+
S4i1[i] = 0.0;
|
108
|
+
|
109
|
+
S1r2[i] = 0.0;
|
110
|
+
S1i2[i] = 0.0;
|
111
|
+
S2r2[i] = 0.0;
|
112
|
+
S2i2[i] = 0.0;
|
113
|
+
S3r2[i] = 0.0;
|
114
|
+
S3i2[i] = 0.0;
|
115
|
+
S4r2[i] = 0.0;
|
116
|
+
S4i2[i] = 0.0;
|
117
|
+
|
118
|
+
Myu1r1[i] = 0.0;
|
119
|
+
Myu1i1[i] = 0.0;
|
120
|
+
Myu2r1[i] = 0.0;
|
121
|
+
Myu2i1[i] = 0.0;
|
122
|
+
Myu3r1[i] = 0.0;
|
123
|
+
Myu3i1[i] = 0.0;
|
124
|
+
Myu4r1[i] = 0.0;
|
125
|
+
Myu4i1[i] = 0.0;
|
126
|
+
}
|
127
|
+
|
128
|
+
pwr1 = 0.0;
|
129
|
+
pwi1 = 0.0;
|
130
|
+
pwr2 = 0.0;
|
131
|
+
pwi2 = 0.0;
|
132
|
+
|
133
|
+
dcnt = 0.0;
|
134
|
+
|
135
|
+
fp = fopen(argv[1],"r");
|
136
|
+
fp1 = fopen(argv[2],"r");
|
137
|
+
|
138
|
+
iter = 0;
|
139
|
+
flag = 0;
|
140
|
+
|
141
|
+
for(n = 0; n < n_frame; n++)
|
142
|
+
{
|
143
|
+
for(i = 0; i < N; i++)
|
144
|
+
{
|
145
|
+
fgets(datar, sizeof(datar), fp);
|
146
|
+
ar1[i] = atof(datar);
|
147
|
+
ar2[i] = 0.0;
|
148
|
+
}
|
149
|
+
|
150
|
+
for(i = 0; i < N; i++)
|
151
|
+
{
|
152
|
+
fgets(datai, sizeof(datai), fp1);
|
153
|
+
ar2[i] = atof(datai);
|
154
|
+
ai2[i] = 0.0;
|
155
|
+
}
|
156
|
+
|
157
|
+
window_func(ar1, N);
|
158
|
+
window_func(ai1, N);
|
159
|
+
fft1(ar1, ai1, N, iter, flag);
|
160
|
+
|
161
|
+
window_func(ar2, N);
|
162
|
+
window_func(ai2, N);
|
163
|
+
fft1(ar2, ai2, N, iter, flag);
|
164
|
+
|
165
|
+
for(i = 0; i < N/2; i++)
|
166
|
+
{
|
167
|
+
swap(&ar1[i], &ar1[N/2+i]);
|
168
|
+
swap(&ai1[i], &ai1[N/2+i]);
|
169
|
+
swap(&ar2[i], &ar2[N/2+i]);
|
170
|
+
swap(&ai2[i], &ai2[N/2+i]);
|
171
|
+
}
|
172
|
+
|
173
|
+
for(i = 0; i < N; i++)
|
174
|
+
{
|
175
|
+
pwr1 = ar1[i];
|
176
|
+
pwi1 = ai1[i];
|
177
|
+
|
178
|
+
S1r1[i] += (double)pwr1;
|
179
|
+
S1i1[i] += (double)pwi1;
|
180
|
+
|
181
|
+
S2r1[i] += pow((double)pwr1, 2.0);
|
182
|
+
S2i1[i] += pow((double)pwi1, 2.0);
|
183
|
+
|
184
|
+
S3r1[i] += pow((double)pwr1, 3.0);
|
185
|
+
S3i1[i] += pow((double)pwi1, 3.0);
|
186
|
+
|
187
|
+
S4r1[i] += pow((double)pwr1, 4.0);
|
188
|
+
S4i1[i] += pow((double)pwi1, 4.0);
|
189
|
+
}
|
190
|
+
|
191
|
+
for(i = 0; i < N; i++)
|
192
|
+
{
|
193
|
+
pwr2 = ar2[i];
|
194
|
+
pwi2 = ai2[i];
|
195
|
+
|
196
|
+
S1r2[i] += (double)pwr2;
|
197
|
+
S1i2[i] += (double)pwi2;
|
198
|
+
|
199
|
+
S2r2[i] += pow((double)pwr2, 2.0);
|
200
|
+
S2i2[i] += pow((double)pwi2, 2.0);
|
201
|
+
|
202
|
+
S3r2[i] += pow((double)pwr2, 3.0);
|
203
|
+
S3i2[i] += pow((double)pwi2, 3.0);
|
204
|
+
|
205
|
+
S4r2[i] += pow((double)pwr2, 4.0);
|
206
|
+
S4i2[i] += pow((double)pwi2, 4.0);
|
207
|
+
}
|
208
|
+
|
209
|
+
dcnt++;
|
210
|
+
|
211
|
+
}
|
212
|
+
|
213
|
+
printf("\n");
|
214
|
+
fclose(fp);
|
215
|
+
fclose(fp1);
|
216
|
+
|
217
|
+
fq = freq();
|
218
|
+
|
219
|
+
for(i = 0; i < N; i++)
|
220
|
+
{
|
221
|
+
Myu1r1[i] = S1r1[i] / dcnt;
|
222
|
+
Myu1i1[i] = S1i1[i] / dcnt;
|
99
223
|
|
224
|
+
Myu2r1[i] = S2r1[i] / dcnt;
|
225
|
+
Myu2i1[i] = S2i1[i] / dcnt;
|
226
|
+
|
227
|
+
Myu3r1[i] = S3r1[i] / dcnt;
|
228
|
+
Myu3i1[i] = S3i1[i] / dcnt;
|
229
|
+
|
230
|
+
Myu4r1[i] = S4r1[i] / dcnt;
|
231
|
+
Myu4i1[i] = S4i1[i] / dcnt;
|
232
|
+
|
233
|
+
Myu21[i] = Myu2r1[i] + Myu2i1[i];
|
234
|
+
}
|
235
|
+
|
236
|
+
|
237
|
+
Myu21_power = CalcPower(Myu21);
|
238
|
+
sub_Myu2_power = CalcPower(Myu21);
|
239
|
+
|
100
|
-
modi_power_freq = CalcPower(
|
240
|
+
modi_power_freq = CalcPower(Myu21);
|
101
|
-
|
102
|
-
|
241
|
+
|
103
|
-
Kr = Kurtosis(Myu1r1, Myu2r1, Myu3r1, Myu4r1
|
242
|
+
Kr = Kurtosis(Myu1r1, Myu2r1, Myu3r1, Myu4r1);
|
104
|
-
Ki = Kurtosis(Myu1i1, Myu2i1, Myu3i1, Myu4i1
|
243
|
+
Ki = Kurtosis(Myu1i1, Myu2i1, Myu3i1, Myu4i1);
|
105
|
-
|
106
|
-
|
107
|
-
|
244
|
+
|
108
|
-
sub_Myu2_power = CalcPower(sub_Myu2, N);
|
109
|
-
|
110
|
-
Ka = Kurtosis(Myu1r
|
245
|
+
Ka = Kurtosis(Myu1r1, Myu2r1, Myu3r1, Myu4r1);
|
111
|
-
Kb = Kurtosis(Myu1i
|
246
|
+
Kb = Kurtosis(Myu1i1, Myu2i1, Myu3i1, Myu4i1);
|
112
|
-
|
247
|
+
|
113
|
-
modi_power_kur1 = CalcPower(
|
248
|
+
modi_power_kur1 = CalcPower(Myu21);
|
114
|
-
modi_power_kur2 = CalcPower(
|
249
|
+
modi_power_kur2 = CalcPower(Myu21);
|
115
|
-
|
250
|
+
|
116
|
-
modi_power_com = CalcPower(
|
251
|
+
modi_power_com = CalcPower(Myu21);
|
117
|
-
|
118
252
|
|
119
253
|
free(fq);
|
120
254
|
free(Kr);
|
@@ -132,7 +266,138 @@
|
|
132
266
|
|
133
267
|
}
|
134
268
|
|
269
|
+
void swap(float *x, float *y)
|
270
|
+
{
|
271
|
+
float temp;
|
272
|
+
|
273
|
+
temp = *x;
|
274
|
+
*x = *y;
|
275
|
+
*y = temp;
|
276
|
+
}
|
277
|
+
|
278
|
+
int fft1(float ar[], float ai[], int n, int iter, int flag)
|
279
|
+
{
|
280
|
+
int i, j, it, xp, xp2, k, j1, j2, im1, jm1;
|
281
|
+
double sign, w, wr, wi, dr1, dr2, di1, di2, tr, ti, arg;
|
282
|
+
|
283
|
+
if(n < 2) return(999);
|
284
|
+
|
285
|
+
if(iter <= 0)
|
286
|
+
{
|
287
|
+
iter = 0;
|
288
|
+
i = n;
|
289
|
+
|
290
|
+
while(1)
|
291
|
+
{
|
292
|
+
if((i /= 2) == 0) break;
|
293
|
+
iter++;
|
294
|
+
}
|
295
|
+
}
|
296
|
+
|
297
|
+
j = 1;
|
298
|
+
|
299
|
+
for(i = 0; i < iter; i++) j *= 2;
|
300
|
+
|
301
|
+
if(n != j) return(1);
|
302
|
+
|
303
|
+
if(flag == 1) sign=1.0;
|
304
|
+
else sign=-1.0;
|
305
|
+
|
306
|
+
xp2 = n;
|
307
|
+
|
308
|
+
for(it = 0; it < iter; it++)
|
309
|
+
{
|
310
|
+
xp = xp2;
|
311
|
+
xp2 = xp / 2;
|
312
|
+
w = 3.141592653589793 / xp2;
|
313
|
+
|
314
|
+
for(k = 0; k < xp2; k++)
|
315
|
+
{
|
316
|
+
arg = k * w;
|
317
|
+
wr = cos(arg);
|
318
|
+
wi = sign * sin(arg);
|
319
|
+
i = k - xp;
|
320
|
+
|
321
|
+
for(j = xp; j <= n; j += xp)
|
322
|
+
{
|
323
|
+
j1 = j + i;
|
324
|
+
j2 = j1 + xp2;
|
325
|
+
dr1 = ar[j1];
|
326
|
+
dr2 = ar[j2];
|
327
|
+
di1 = ai[j1];
|
328
|
+
di2 = ai[j2];
|
329
|
+
tr = dr1 - dr2;
|
330
|
+
ti = di1 - di2;
|
331
|
+
|
332
|
+
ar[j1] = dr1 + dr2;
|
333
|
+
ai[j1] = di1 + di2;
|
334
|
+
ar[j2] = tr * wr - ti * wi;
|
335
|
+
ai[j2] = ti * wr + tr * wi;
|
336
|
+
}
|
337
|
+
}
|
338
|
+
}
|
339
|
+
|
340
|
+
j1 = n / 2;
|
341
|
+
j2 = n - 1;
|
342
|
+
j = 1;
|
343
|
+
|
344
|
+
for(i = 1; i <= j2; i++)
|
345
|
+
{
|
346
|
+
if(i < j)
|
347
|
+
{
|
348
|
+
im1 = i - 1;
|
349
|
+
jm1 = j - 1;
|
350
|
+
tr = ar[jm1];
|
351
|
+
ti = ai[jm1];
|
352
|
+
|
353
|
+
ar[jm1] = ar[im1];
|
354
|
+
ai[jm1] = ai[im1];
|
355
|
+
ar[im1] = tr;
|
356
|
+
ai[im1] = ti;
|
357
|
+
}
|
358
|
+
|
359
|
+
k = j1;
|
360
|
+
|
361
|
+
while(k < j)
|
362
|
+
{
|
363
|
+
j -= k;
|
364
|
+
k /= 2;
|
365
|
+
}
|
366
|
+
|
367
|
+
j += k;
|
368
|
+
}
|
369
|
+
|
370
|
+
if(flag == 0) return(0);
|
371
|
+
|
372
|
+
w = n;
|
373
|
+
|
374
|
+
for(i = 0; i < n; i++)
|
375
|
+
{
|
376
|
+
ar[i] = ar[i] / w;
|
377
|
+
ai[i] = ai[i] / w;
|
378
|
+
}
|
379
|
+
|
380
|
+
return(0);
|
381
|
+
}
|
382
|
+
|
383
|
+
|
384
|
+
int window_func(float frame[], int n)
|
385
|
+
{
|
386
|
+
int i;
|
387
|
+
float winv[n];
|
388
|
+
double pi = 3.141592653589793;
|
389
|
+
|
390
|
+
for(i = 0; i < n; i++)
|
391
|
+
{
|
392
|
+
winv[i] = 0.35875 - 0.48829 * cos(2.0*pi*i/(n-1)) + 0.14128 * cos(4.0*pi*i/(n-1)) - 0.01168 * cos(6.0*pi*i/(n-1));
|
393
|
+
|
394
|
+
frame[i] = frame[i] * winv[i];
|
395
|
+
}
|
396
|
+
|
397
|
+
return(0);
|
398
|
+
}
|
399
|
+
|
135
|
-
double* CalcPower(double data[]
|
400
|
+
double* CalcPower(double data[])
|
136
401
|
{
|
137
402
|
int i;
|
138
403
|
double av[N];
|
@@ -150,13 +415,13 @@
|
|
150
415
|
return power;
|
151
416
|
}
|
152
417
|
|
153
|
-
double* Kurtosis(double Myu1[], double Myu2[], double Myu3[], double Myu4[]
|
418
|
+
double* Kurtosis(double Myu1[], double Myu2[], double Myu3[], double Myu4[])
|
154
419
|
{
|
155
420
|
int i;
|
156
421
|
double M1[N], M2[N], M3[N], M4[N];
|
157
422
|
double top[N], bottom[N];
|
158
423
|
double* K = (double*)malloc(N * sizeof(double));
|
159
|
-
|
424
|
+
|
160
425
|
for(i = 0; i < N; i++)
|
161
426
|
{
|
162
427
|
M1[i] = 0.0;
|
@@ -194,7 +459,7 @@
|
|
194
459
|
|
195
460
|
}
|
196
461
|
|
197
|
-
double* freq(i
|
462
|
+
double* freq(void)
|
198
463
|
{
|
199
464
|
int i;
|
200
465
|
double* fq = (double*)malloc(N * sizeof(double));
|
@@ -205,7 +470,41 @@
|
|
205
470
|
return fq;
|
206
471
|
|
207
472
|
}
|
208
|
-
|
473
|
+
```
|
474
|
+
```C
|
475
|
+
#include <stdio.h>
|
476
|
+
#include <stdlib.h>
|
477
|
+
#include <time.h>
|
478
|
+
|
479
|
+
#define N 3000000
|
480
|
+
|
481
|
+
double GetRandom();
|
482
|
+
|
483
|
+
int main()
|
484
|
+
{
|
485
|
+
int i;
|
486
|
+
FILE *fp, *fp1;
|
487
|
+
|
488
|
+
fp = fopen("rand1.dat", "w");
|
489
|
+
fp1 = fopen("rand2.dat", "w");
|
490
|
+
|
491
|
+
srand((unsigned int)time(NULL));
|
492
|
+
for(i = 0; i < N; i++)
|
493
|
+
{
|
494
|
+
fprintf(fp, "%f\n", GetRandom(0,1));
|
495
|
+
fprintf(fp1, "%f\n", GetRandom(0,1));
|
496
|
+
}
|
497
|
+
|
498
|
+
fclose(fp);
|
499
|
+
fclose(fp1);
|
500
|
+
|
501
|
+
return 0;
|
502
|
+
}
|
503
|
+
|
504
|
+
double GetRandom(int min, int max)
|
505
|
+
{
|
506
|
+
return min + (double)(rand() * (max - min + 1.0) / (1.0 + RAND_MAX));
|
507
|
+
}
|
209
508
|
```
|
210
509
|
|
211
510
|
### 補足情報(FW/ツールのバージョンなど)
|