📄 formparameterset.frm
字号:
VERSION 5.00
Begin VB.Form FrmParameterSet
BorderStyle = 4 'Fixed ToolWindow
Caption = "参数设置"
ClientHeight = 4980
ClientLeft = 45
ClientTop = 285
ClientWidth = 4530
LinkTopic = "Form1"
LockControls = -1 'True
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 4980
ScaleWidth = 4530
ShowInTaskbar = 0 'False
StartUpPosition = 3 'Windows Default
Begin VB.CommandButton CmdCancel
Caption = "&Cancel"
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 2400
TabIndex = 10
Top = 4080
Width = 1095
End
Begin VB.CommandButton cmdOk
Caption = "&Ok"
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 840
TabIndex = 9
Top = 4080
Width = 1095
End
Begin VB.Frame Frame1
Caption = "一维正态云参数设置"
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 3255
Left = 600
TabIndex = 0
Top = 600
Width = 3015
Begin VB.TextBox txtN
Appearance = 0 'Flat
Height = 375
Left = 1440
TabIndex = 8
Top = 2640
Width = 1335
End
Begin VB.TextBox txtHe
Appearance = 0 'Flat
Height = 375
Left = 1440
TabIndex = 7
Top = 1920
Width = 1335
End
Begin VB.TextBox txtEn
Appearance = 0 'Flat
Height = 375
Left = 1440
TabIndex = 6
Top = 1200
Width = 1335
End
Begin VB.TextBox txtEx
Appearance = 0 'Flat
Height = 375
Left = 1440
TabIndex = 5
Top = 600
Width = 1335
End
Begin VB.Label Label4
Caption = "云滴数:"
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 240
TabIndex = 4
Top = 2640
Width = 975
End
Begin VB.Label Label3
Caption = "超熵(He):"
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 240
TabIndex = 3
Top = 1920
Width = 1215
End
Begin VB.Label Label2
Caption = "熵(En):"
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 240
TabIndex = 2
Top = 1200
Width = 975
End
Begin VB.Label Label1
Caption = "期望(Ex):"
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 240
TabIndex = 1
Top = 600
Width = 1335
End
End
End
Attribute VB_Name = "FrmParameterSet"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Public Event DrawCloud()
Private Sub CmdCancel_Click()
Unload Me
End Sub
Private Sub cmdOk_Click()
m_dEx = CDbl(txtEx.Text)
m_dEn = CDbl(txtEn.Text)
m_dHe = CDbl(txtHe.Text)
m_iN = CDbl(txtN.Text)
Me.Hide
FrmCloudModel.picDrawCloud.Cls
DrawCoordinate
FCloudGeneratorTool m_dEx, m_dHe, m_dEn, m_iN
End Sub
Private Sub Form_Load()
txtEx.Text = "0"
txtEn.Text = "3"
txtHe.Text = "0.3"
txtN.Text = "10000"
End Sub
Public Function DrawCoordinate()
Dim dLen As Double
Dim xUnit As Double
Dim sStr As String
Dim i As Integer
' dLen = (3 * m_dEn) / (0.9974 / 2)
' xUnit = dLen / 3
With FrmCloudModel
.picDrawCloud.ScaleMode = 3
.picDrawCloud.Scale (0, 600)-(600, 0)
' .picDrawCloud.Font.Size = 12
End With
'*********绘制Y轴****************************
With FrmCloudModel
.picDrawCloud.DrawWidth = 2
.picDrawCloud.Line (80, 50)-(80, 550), vbRed
For i = 1 To 10
.picDrawCloud.Line (80, 50 + i * 50)-(85, 50 + i * 50), vbRed
Next
End With
'********************************************
'*********绘制X轴****************************
With FrmCloudModel
.picDrawCloud.DrawWidth = 2
.picDrawCloud.Line (80, 50)-(580, 50), vbRed
For i = 1 To 6
.picDrawCloud.Line (80 + 500 * i / 6, 50)-(80 + 500 * i / 6, 55)
Next i
End With
'********************************************
' *********绘制y轴的坐标标注*******************
sStr = "0.1"
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 35
.picDrawCloud.CurrentY = 50 + 0.1 * 500
.picDrawCloud.Print sStr
End With
sStr = "0.2"
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 35
.picDrawCloud.CurrentY = 50 + 0.2 * 500
.picDrawCloud.Print sStr
End With
sStr = "0.3"
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 35
.picDrawCloud.CurrentY = 50 + 0.3 * 500
.picDrawCloud.Print sStr
End With
sStr = "0.4"
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 35
.picDrawCloud.CurrentY = 50 + 0.4 * 500
.picDrawCloud.Print sStr
End With
sStr = "0.5"
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 35
.picDrawCloud.CurrentY = 50 + 0.5 * 500
.picDrawCloud.Print sStr
End With
sStr = "0.6"
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 35
.picDrawCloud.CurrentY = 50 + 0.6 * 500
.picDrawCloud.Print sStr
End With
sStr = "0.7"
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 35
.picDrawCloud.CurrentY = 50 + 0.7 * 500
.picDrawCloud.Print sStr
End With
sStr = "0.8"
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 35
.picDrawCloud.CurrentY = 50 + 0.8 * 500
.picDrawCloud.Print sStr
End With
sStr = "0.9"
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 35
.picDrawCloud.CurrentY = 50 + 0.9 * 500
.picDrawCloud.Print sStr
End With
sStr = "1.0"
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 35
.picDrawCloud.CurrentY = 50 + 1# * 500
.picDrawCloud.Print sStr
End With
sStr = "u(x)"
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 5
.picDrawCloud.CurrentY = 50 + 0.5 * 500
.picDrawCloud.Print sStr
End With
'********************************************
' *********绘制x轴的坐标标注*******************
sStr = CStr(Format(m_dEx - 3 * m_dEn, "0.00"))
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 80 - 5
.picDrawCloud.CurrentY = 40
.picDrawCloud.Print sStr
End With
sStr = CStr(Format(m_dEx - 2 * m_dEn, "0.00"))
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 80 + 500 / 6 - 15
.picDrawCloud.CurrentY = 40
.picDrawCloud.Print sStr
End With
sStr = CStr(Format(m_dEx - m_dEn, "0.00"))
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 80 + 500 * 2 / 6 - 15
.picDrawCloud.CurrentY = 40
.picDrawCloud.Print sStr
End With
sStr = CStr(Format(m_dEx, "#.00"))
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 80 + 500 * 3 / 6 - 15
.picDrawCloud.CurrentY = 40
.picDrawCloud.Print sStr
End With
sStr = CStr(Format(m_dEx + m_dEn, "0.00"))
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 80 + 500 * 4 / 6 - 15
.picDrawCloud.CurrentY = 40
.picDrawCloud.Print sStr
End With
sStr = CStr(Format(m_dEx + 2 * m_dEn, "0.00"))
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 80 + 500 * 5 / 6 - 15
.picDrawCloud.CurrentY = 40
.picDrawCloud.Print sStr
End With
sStr = CStr(Format(m_dEx + 3 * m_dEn, "0.00"))
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.CurrentX = 80 + 500 * 6 / 6 - 15
.picDrawCloud.CurrentY = 40
.picDrawCloud.Print sStr
End With
sStr = "x"
'控制添加文字的位置
With FrmCloudModel
.picDrawCloud.Font.Size = 12
.picDrawCloud.CurrentX = 80 + 500 * 3 / 6 - 15
.picDrawCloud.CurrentY = 20
.picDrawCloud.Print sStr
End With
End Function
'一维正向正态云发生器
Public Function FCloudGeneratorTool(Ex As Double, He As Double, En As Double, dropNumber As Integer)
Dim Enn As Double
Dim x As Double
Dim y As Double
Dim i As Integer
Const Pi = 3.14159265358979
Dim iCount As Integer
'设置随机数的初始值
Randomize
' '清空以前的点集合
' For i = 1 To dropNumber
'
' cPoint(i, 1) = 0
' cPoint(i, 2) = 0
'
' Next
For i = 1 To dropNumber
'生成以En为均值,He*He为方差的正态随机数
Enn = CDbl((Sqr(-2 * Log(Rnd())) * Cos(2 * Pi * Rnd())) * He + En)
'生成以Ex为均值,Enn*Enn为方差的正态随机数
x = CDbl((Sqr(-2 * Log(Rnd())) * Cos(2 * Pi * Rnd())) * Enn + Ex)
'生成随机数x所对应的根据云的数字特征(Ex,En,He)所确定的概念的确定度
y = CDbl(Exp(-((x - Ex) * (x - Ex)) / (2 * Enn * Enn)))
If x * y <> 0 Then
'绘制云
FrmCloudModel.picDrawCloud.PSet (80 + ((x - Ex + 3 * En) * 500 / 6) / En, 50 + 500 * y), vbBlack
If x > Ex - 3 * En And x < Ex + 3 * En Then
iCount = iCount + 1
End If
End If
Next i
' MsgBox iCount
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -