不再冒牌,散分

rea1gz 2004-09-12 09:46:15
本来应该把账号还给正牌的,但是想了两天,还是舍不得,就当留给冒牌坐纪念吧


...全文
638 106 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
106 条回复
切换为时间正序
请发表友善的回复…
发表回复
dabears 2004-09-19
  • 打赏
  • 举报
回复
我现在还可以接多少分?
forgetxuan 2004-09-19
  • 打赏
  • 举报
回复
continue..........
dongge2000 2004-09-19
  • 打赏
  • 举报
回复
UP
haiz_2001 2004-09-19
  • 打赏
  • 举报
回复
分啊
gzheng23 2004-09-19
  • 打赏
  • 举报
回复
up
qhyan23 2004-09-19
  • 打赏
  • 举报
回复
我可以接几分呀
icegoset 2004-09-18
  • 打赏
  • 举报
回复
up
windy2008 2004-09-18
  • 打赏
  • 举报
回复
接分来了.......
要分要分要分....
forgetxuan 2004-09-18
  • 打赏
  • 举报
回复
continue
j9968 2004-09-18
  • 打赏
  • 举报
回复

奇怪了,按楼主的说法,randomize的所在位置确实影响本问题的结果。但是,我用下面的实验,得到的结论却是randomize的位置与随机函数的结果无关,这是怎么回事呢?

Option Explicit
Dim i As Long, j As Integer
Dim s As Double

Private Sub Command1_Click()

s = 0

For i = 0 To 100000
For j = 0 To 999
Randomize
s = s + Rnd()
Next j
Next i

Print s / 100000000

End Sub

Private Sub Command2_Click()

s = 0

For i = 0 To 100000
Randomize
For j = 0 To 999
s = s + Rnd()
Next j
Next i

Print s / 100000000

End Sub

Private Sub Command3_Click()

s = 0

Randomize
For i = 0 To 100000
For j = 0 To 999
s = s + Rnd()
Next j
Next i

Print s / 100000000


End Sub
rea1gz 2004-09-18
  • 打赏
  • 举报
回复
PPLUNCLE(.NET学习中-人是逼出来的!) :
天下冒牌这么多,哪能都是我的呀
现在5个是我的
过一阵这5个都要封存了
rea1gz 2004-09-18
  • 打赏
  • 举报
回复
这个实验我也做过,还作过以下试验:

Dim r(39) As Integer
Dim id As Integer
Dim i As Long, j As Long

For j = 0 To 39
r(j) = 0
Next
For i = 0 To 5000000
Randomize
id = Int(Rnd() * 40)
r(id)=r(id)+1
Next

最后r(0)到r(39)也差不多

我想主要原因是每次从Randomize到Rnd()中间执行的指令数是相同的,而Rnd()函数是和时间相关的,才会出现随机函数虽然总的来看是随机的,但是前后几个随机数却存在某些相关性,影响了你的测试。
PPLUNCLE 2004-09-18
  • 打赏
  • 举报
回复
楼主,是不是这个板块的冒牌都是你一个人啊!
wingedsteed 2004-09-18
  • 打赏
  • 举报
回复
接分。
windy2008 2004-09-17
  • 打赏
  • 举报
回复
我要分啊.呵呵......
ywm8208 2004-09-17
  • 打赏
  • 举报
回复
接分
fense2002 2004-09-17
  • 打赏
  • 举报
回复
1
Jackile 2004-09-17
  • 打赏
  • 举报
回复
厉害啊。。。。
j9968 2004-09-17
  • 打赏
  • 举报
回复

但是,我用5000000次的测试,结果与你的理论计算值有误差。我测试N=40时的值为0.5307,而你的计算值为0.5026。是不是我的测试方法有误?

'form1.frm:

VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 3495
ClientLeft = 60
ClientTop = 1530
ClientWidth = 11790
LinkTopic = "Form1"
ScaleHeight = 3495
ScaleWidth = 11790
Begin VB.TextBox Text7
Height = 375
Left = 6360
Locked = -1 'True
TabIndex = 8
Text = "Text7"
Top = 240
Width = 1455
End
Begin VB.TextBox Text6
Height = 375
Left = 4320
Locked = -1 'True
TabIndex = 7
Text = "Text6"
Top = 840
Width = 1455
End
Begin VB.TextBox Text5
Height = 375
Left = 4320
Locked = -1 'True
TabIndex = 6
Text = "Text5"
Top = 240
Width = 1455
End
Begin VB.TextBox Text4
Height = 375
Left = 2280
Locked = -1 'True
TabIndex = 5
Text = "Text4"
Top = 840
Width = 1455
End
Begin VB.TextBox Text3
Height = 375
Left = 2280
Locked = -1 'True
TabIndex = 4
Text = "Text3"
Top = 240
Width = 1455
End
Begin VB.TextBox Text2
Height = 375
Left = 240
Locked = -1 'True
TabIndex = 3
Text = "Text2"
Top = 840
Width = 1455
End
Begin VB.TextBox Text1
Height = 375
Left = 240
Locked = -1 'True
TabIndex = 2
Text = "Text1"
Top = 240
Width = 1455
End
Begin VB.Label Label2
BackColor = &H80000001&
Caption = " "
Height = 375
Left = 240
TabIndex = 1
Top = 1440
Width = 11415
End
Begin VB.Label Label1
BackColor = &H80000009&
Caption = " "
Height = 375
Left = 240
TabIndex = 0
Top = 1440
Width = 11415
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim n As Integer
Dim a() As Boolean

Private Sub Form_Click()

Dim id As Integer
Dim r(5000000) As Integer
Dim i As Long, j As Long
Dim b As Boolean
Dim s As Long
Dim c As Integer

For j = 1 To 7
Me("text" & j).Text = ""
Next j

For n = 30 To 60 Step 5
ReDim a(n - 1) As Boolean
For j = 0 To 5000000
r(j) = 0
Next
For i = 0 To 5000000
For j = 0 To n - 1
a(j) = False
Next j
Do
b = False
For j = 0 To 2
Randomize
id = Int(Rnd() * n)
If a(id) = False Then
b = True
a(id) = True
Exit For
End If
Next
Loop Until b = False
For j = 0 To n - 1
r(i) = r(i) + IIf(a(j) = True, 1, 0)
Next j
If i Mod 50000 = 0 Then
Label2.Width = Label1.Width * i / 5000000#
DoEvents
End If
Next i

s = 0

For j = 0 To 5000000
s = s + r(j)
Next j

If Me.CurrentY > Me.ScaleHeight - 600 Then
c = c + 1
CurrentY = 0
End If
CurrentX = c * 2000
Me("text" & CStr(n / 5 - 5)).Text = n & ": " & s / (n * 5000001#)
Next n


End Sub
renaski 2004-09-17
  • 打赏
  • 举报
回复
.
加载更多回复(86)

11,850

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧