⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formparameterset.frm

📁 用VB实现的一维正向正态云模型发生器。网上有一个用VC写的
💻 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 + -