[자바] 변수지정 문제입니다. 에러가 나네용.
이뻐
import java.io.*;
import java.awt.*;
import java.util.*;
class RandomN
{ public static void main (String args[]) {
/********************************
난수를 발생시키는 프로그램
********************************/
int n =50;
int p =100;
int a =1025;
int c =1;
int s =10;
double m;
m = Math.pow(2, 31);
int x [] = new int [n+1];
double y [][] = new double [n][p];
double z [][] = new double [n][p];
System.out.println(50쌍의 난수를 발생시키세요);
System.out.println(초기값을 이용하십시요);
for (int h=0; hn; ++h )
{ int i=0;
y [h][i] = (a*x[h]+c)%m;
z [h][i] = y[h][i]/m;
x[h+1] = x[h] + 123215;
for ( i = 0 ; i p ;++i )
{
y[h][i+1] = (a*y[h][i]+c)% m ;
z[h][i+1] = y[h][i+1]/m;
}
}
System.out.println(===============================================);
System.out.println(Number\t난수\n);
System.out.println( \t No.1 \t No.2 \t No.3 ......... \t No.99 \t No.100 \n);
System.out.println(===============================================);
System.out.println(1\t+z[0][0]+\t+z[0][1]+\t+z[0][2]+\t.............\t+z[0][p-2]+\t+z[0][p-1]+\n\n);
for ( int j = 1 ; j n ; ++j )
{
System.out.println((j+1)+\t+z[j][0]+\t+z[j][1]+\t+z[j][2]+\t............\t+z[j][p-2]+\t+z[j][p-1]+\n\n);
}
System.out.println(===============================================);
/******************************************
카이제곱 적합도검정을 하는 프로그램
******************************************/
int part [][] = new int [s][n];
double Ei[] = new double [n];
double F[] = new double [n];
double W[] = new double [n];
double Hyp[]= new double [n];
System.out.println(#2. 카이제곱 적합도 검정을 실시한다.\n\n);
System.out.println( 1)가설 설정 \n );
System.out.println(H_0:난수가 표준균일 분포를 따른다.\n);
System.out.println(H_1:난수가 표준균일 분포를 따르지 않는다.\n\n);
for (int k =0 ; k p ; ++k)
{
for (int r =0 ; rn ;++r )
{
if (z[r][k]0.1)
{
part[0][r]++;
}
else if(z[r][k]0.2)
{ part[1][r]++;
}
else if(z[r][k]0.3)
{ part[2][r]++;
}
else if(z[r][k]0.4)
{ part[3][r]++;
}
else if(z[r][k]0.5)
{ part[4][r]++;
}
else if(z[r][k]0.6)
{ part[5][r]++;
}
else if(z[r][k]0.7)
{ part[6][r]++;
}
else if(z[r][k]0.8)
{ part[7][r]++;
}
else if(z[r][k]0.9)
{ part[8][r]++;
}
else if(z[r][k]1.0)
{ part[9][r]++;
}
}
}
System.out.println( 2) 관측도수 출력\n);
System.out.println(================================================\n);
System.out.println(Number\t군간 \n);
System.out.println( \t NO1 \t No2 \t No3 \t ...............\t No9 \t No10 \n);
System.out.println(================================================\n);
for (int u =0 ; u n ;++u )
{
System.out.println( +u+\t+part[0][u]+\t+part[1][u]+\t+part[2][u]+\t......\t+part[s-2][u]+\t+part[s-1][u]+\n);
}
System.out.println(=================================================\n\n\n);
for ( k=0 ; k n ; ++k )
{
for (j=0;js ; ++j )
{
Ei[k]=part[j][k]-10;
F[k] = F [k] + (Ei[k]%2);
}
W[k]= F[k]/10;
if (W[k]=16.92)
{
Hyp[0]++; //채택하는 경우
}
else
{ Hyp[1]++; //기각하는 경우
}
}
}
}
이거 돌려보면 아랫쪽 k j n변수에 문제가 생기네요 위에서 다 변수지정 해줬는데
누가 이것좀 해결 좀해주세요.
-
알
아 네 감사합니다.
-
아이뻐
위쪽에 쓰여진 k,j는 for문 안에서만 유효합니다. for문 밖으로 나오면 유효하지 않죠. 아래쪽 for문의 k,n 앞에도 int로 선언하시면 잘 돌아 갈껍니다. ^^