VERSION 5.00 Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX" Begin VB.Form Form1 Caption = "Form1" ClientHeight = 1830 ClientLeft = 60 ClientTop = 345 ClientWidth = 4785 LinkTopic = "Form1" ScaleHeight = 1830 ScaleWidth = 4785 ShowInTaskbar = 0 'False StartUpPosition = 3 'Windows の既定値 Begin VB.TextBox Text2 Height = 270 Left = 360 TabIndex = 2 Text = "9.ラテン方格法" Top = 480 Width = 2535 End Begin MSComDlg.CommonDialog CommonDialog1 Left = 3840 Top = 1200 _ExtentX = 847 _ExtentY = 847 _Version = 393216 End Begin VB.CommandButton Command1 Caption = "0入力;学生用ファイル(*.js),その他の値;先生用ファイル(*.txt)作成 " Height = 855 Left = 1320 TabIndex = 1 Top = 960 Width = 2055 End Begin VB.TextBox Text1 Height = 495 Left = 240 TabIndex = 0 Top = 1200 Width = 735 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Private Sub command1_click() '9.ラテン方格法.0入力は学生,それ以外は教師用ファイル作成' Dim bango As Integer Dim yr, REP, HAN, num As Integer bango = Val(Text1.Text) CommonDialog1.ShowSave Open CommonDialog1.FileName For Output As #1 QQ = 0 Form1.AutoRedraw = True yr = Val(Mid$(Date$, 3, 4)) Print yr Randomize (yr + 19) Dim DUNC(2, 2), DU$(9, 9), X(20, 20) Dim m(9), MO(9), SD(9), K(9), L(9), T(2), q(9), MH(9) ' duncan data yomikomi DUNC(2, 1) = 6.085 DUNC(2, 2) = 6.085 ' t-value T(2) = 4.303 ' NH = 3: NR = 3 ' KURIKAESHI ' If bango = 0 Then GoTo NOBANGO Else For num = 1 To 9 Print #1, ""; num; " "; Next num For num = 10 To 99 Print #1, ""; num; " "; Next num Print #1, "
" End If NOBANGO: For REP = 1 To 100 'Number of students For HAN = 1 To 2 'Number of works per student START: X(2, 1) = Int(Rnd * 4 + 1): X(1, 2) = Int(Rnd * 4 + 2): X(3, 3) = Int(Rnd * 4 + 1) X(1, 1) = Int(Rnd * 4 + 6): X(3, 2) = Int(Rnd * 4 + 8): X(2, 3) = Int(Rnd * 4 + 3) X(3, 1) = Int(Rnd * 4 + 2): X(2, 2) = Int(Rnd * 4 + 3): X(1, 3) = Int(Rnd * 4 + 1) L810: GM = 0: GD = 0: TD = 0: YD = 0: HD = 0: TM = 0: YM = 0: CC = 0 m(1) = X(2, 1) + X(1, 2) + X(3, 3) m(2) = X(1, 1) + X(3, 2) + X(2, 3) m(3) = X(3, 1) + X(2, 2) + X(1, 3) For i = 1 To 2: For j = 1 To 3 - i If m(i) = m(i + j) Then GoTo START Next j: Next i For i = 1 To NR: For j = 1 To NH: GD = GD + X(i, j) ^ 2: Next j: Next i GM = m(1) + m(2) + m(3): CF = GM ^ 2 / (NR * NH) GD = GD - CF For j = 1 To 3: For i = 1 To 3: TM = TM + X(i, j): Next i: TD = TD + TM ^ 2: TM = 0: Next j For j = 1 To 3: For i = 1 To 3: YM = YM + X(j, i): Next i: YD = YD + YM ^ 2: YM = 0: Next j TD = TD / 3 - CF: YD = YD / 3 - CF HD = (m(1) ^ 2 + m(2) ^ 2 + m(3) ^ 2) / 3 - CF MST = TD / 2: MSY = YD / 2: MSH = HD / 2 ED = GD - TD - YD - HD: ER = ED / 2 For i = 1 To 3: m(i) = m(i) / 3: Next i If ER < 0.01 Then GoTo START If MSH / ER < 20 Then GoTo START SXBAR = (ER / NR) ^ (1 / 2) DF = 2 LSD = T(DF) * (2) ^ (1 / 2) * SXBAR 'mean values sorting For i = 1 To NH - 1 KK = i + 1 For j = KK To NH If m(i) > m(j) Then GoTo L1110 WORK = m(i): m(i) = m(j): m(j) = WORK Next j L1110: Next i For i = 1 To NR - 1 q(i) = SXBAR * DUNC(DF, i) Next i For j = 1 To NH - 1 For i = 1 To NH - j Q2 = q(NH - i - j + 1) SA = m(j) - m(NH - i + 1) If SA < Q2 Then GoTo L1270 CC = CC + 1 L1270: Next i Next j If CC < 2 Then GoTo START If CC = NH * (NH - 1) / 2 Then GoTo START ' ------------------------ ' If bango = 0 Then GoTo FILEFORSTUDENT ' FILEOUT FOR SENSEI ' If REP < 10 And HAN = 1 Then Print #1, "" If REP > 9 And HAN = 1 Then Print #1, "" Print #1, REP; "-"; HAN Print #1, " B:"; Print #1, X(1, 1); Print #1, " A:"; Print #1, X(1, 2); Print #1, " C:"; Print #1, X(1, 3) Print #1, " A:"; Print #1, X(2, 1); Print #1, " C:"; Print #1, X(2, 2); Print #1, " B:"; Print #1, X(2, 3) Print #1, " C:"; Print #1, X(3, 1); Print #1, " B:"; Print #1, X(3, 2); Print #1, " A:"; Print #1, X(3, 3) Print #1, "MEAN"; For i = 1 To 3 Print #1, "; No."; i; m(i); Next i Print #1, Print #1, "Sowa, SStotal, SStr, SSgyo, SSretu = "; Print #1, Format(GM, "####"); Format(GD + CF, "###.####"); "-"; Format(CF, "###.####"); ", "; Format((HD + CF) * 3, "###.####"); "/3-CF, "; Print #1, Format((TD + CF) * 3, "###.####"); "/3-CF, "; Format((YD + CF) * 3, "###.####"); "/3-cf" Print #1, "ANOVA Table" Print #1, "FACTOR DF SS MS F" Print #1, "TOTAL 8 "; Print #1, Format(GD, "000.000") Print #1, "SHORI 2 "; Print #1, Format(HD, "000.000"); Print #1, Spc(4); Print #1, Format(MSH, "000.000"); Print #1, Spc(4); Print #1, Format(MSH / ER, "000.000") Print #1, "RETU 2 "; Print #1, Format(TD, "000.000"); Print #1, Spc(4); Print #1, Format(MST, "000.000"); Print #1, Spc(4); Print #1, Format(MST / ER, "000.000") Print #1, "GYOU 2 "; Print #1, Format(YD, "000.000"); Print #1, Spc(4); Print #1, Format(MSY, "000.000"); Print #1, Spc(4); Print #1, Format(MSY / ER, "000.000") Print #1, "ERROR 2 "; Print #1, Format(ED, "000.000"); Print #1, Spc(4); Print #1, Format(ER, "000.000") Print #1, "F_value = 19.0, 99.0" For i = 1 To NH MO(i) = m(i) Next i Print #1, "Sorted means "; For i = 1 To NH Print #1, Format(m(i), "###.###"); Print #1, Spc(4); Next i Print #1, " SXB,lsd,Tdf= "; Print #1, Format(SXBAR, "###.####"); Print #1, Spc(4); Print #1, Format(LSD, "###.####"); Print #1, Spc(4); Print #1, Format(T(DF), "##.###") MDF = DF ' ika subeteno sano kentei For i = 1 To NR - 1 q(i) = SXBAR * DUNC(MDF, i) Next i For j = 1 To NH - 1 For i = 1 To NH - j Print #1, j; "-"; NH - i + 1; "; "; Q2 = q(NH - i - j + 1) Print #1, "q("; NH - i - j + 2; ")= "; Print #1, Format(Q2, "###.###"); SA = m(j) - m(NH - i + 1) Print #1, " SA= "; Print #1, Format(SA, "###.###"); If SA > Q2 Then GoTo L1790 Else GoTo L1820 L1790: Print #1, " *" DU$(NH - i, j) = "* " GoTo L1840 L1820: Print #1, " S" DU$(NH - i, j) = "N" L1840: Next i Next j ' duncan no kigou atoha tesagyou For i = 1 To NH - 1 For j = 1 To i Print #1, DU$(i, j); " "; Next j Print #1, Next i GoTo TOBASU ' ====================== ' FILEFORSTUDENT: If HAN > 1 Then GoTo TOBU3 Print #1, "jsDB["; Print #1, QQ; Print #1, "]='"; TOBU3: Print #1, " No. ", HAN, "
"; Print #1, " B:"; Print #1, X(1, 1); Print #1, " A:"; Print #1, X(1, 2); Print #1, " C:"; Print #1, X(1, 3), "
"; Print #1, " A:"; Print #1, X(2, 1); Print #1, " C:"; Print #1, X(2, 2); Print #1, " B:"; Print #1, X(2, 3), "
"; Print #1, " C:"; Print #1, X(3, 1); Print #1, " B:"; Print #1, X(3, 2); Print #1, " A:"; Print #1, X(3, 3), "
"; Print #1, "LSD= ", Format(LSD, "###.####"), "
"; TOBASU: Next HAN Print #1, "'" QQ = QQ + 1 Next REP Close #1 Form1.Print Form1.Print "OK" End Sub