討論區快速選單
知識庫快速選單
程式設計俱樂部Facebook粉絲團 軟體開發過程中有哪些資安漏洞?
[ 回上頁 ] [ 討論區發言規則 ]
求救-亂數產生成是無法完成
更改我的閱讀文章字型大小
作者 : cerberus1028(Cerberus)
[ 貼文 12 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/10/27 下午 10:04:33
Dim cnt As Integer
Dim item As Single
Dim num(99) As Double '10/0.1=100,需要100個元素的陣列
Dim times(99) As String
Dim tt As Variant
Dim dot As Integer
Dim lastsec As Integer

Private Sub Form_Load()
cnt = 0
item = 0
dot = 0
Rem ------------------------
Rem 亂數產生週期=0.1秒

Timer1.Interval = 100

Rem 開啟文字檔,寫入檔案欄位資訊
Open "c:\temp.txt" For Output As #1
 Title = "編 號____日期時間____產生的亂數______"
 Write #1, Title
Close #1

ss = Second(Now)
Timer1.Enabled = False
Do While ss = Second(Now) '確保當換秒時才開始計時
Loop
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()

Rem 確保產生10位數之亂數,設定最小值為1000000000
Rem 10位數之數值,以倍精數設定
num(cnt) = Fix((9999999999# - 1000000000#) * Rnd) + 1000000000#
tt = Now
hh = Format(Hour(tt), "00") '輸出格式2位數
mm = Format(Minute(tt), "00")
ss = Format(Second(tt), "00")
If lastsec <> ss Then '當秒數變換時,重設dot
   dot = 0
End If
times(cnt) = hh & ":" & mm & ":" & ss & "." & dot '輸出時間格式 xx:xx:xx.x
lastsec = ss '記錄最後的秒數
Text1 = num(cnt) '監視用
Text2 = item
Text4 = cnt
dot = dot + 1
cnt = cnt + 1


Rem cnt=100次=10秒,存入亂數資訊。
Rem 由於開檔存檔需要時間必當產生些微秒差,由測試結果發現,處理的時間約為0.1秒,也就是說,在1秒內理應產生10個亂數值,結果只存入
Rem 9個,這是很合理的現象,換句話說,0.1秒的間距是不夠CPU來處理Timer1內的所有敘述。是不是要有其他分工的方式處理??


If cnt Mod 100 = 0 Then
    
     Open "c:\temp.txt" For Append As #1
    
     For i = 0 To 99
     item = item + 1
     Text3 = times(i)
     Write #1, item, times(i), num(i)
     Next
    
    Close #1
    
  
    Erase times, num '刪除陣列,準備儲存下一個10秒鐘
    
    Rem 一星期後關閉視窗
    Rem 一星期=7*24*60*60=604800秒
    Rem 測試用只設定執行300次,視實際需要,選擇下列2列的其中一種來執行。
    
    Rem If item > 604800 Then
    If item >= 300 Then
     Timer1.Enabled = False
     Unload Me
    End If
    cnt = 0
End If

End Sub

請問要如何將以上的程式碼完成並製成程式運作
作者 : redrock99(阿呆紅) Visual Basic優秀好手貼文超過200則
[ 貼文 379 | 人氣 2550 | 評價 3040 | 評價/貼文 8.02 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人cerberus1028註記此篇回應為很有道理 2009/10/29 下午 03:16:40
應該不是跑不完, 而是因為 VB 的 Timer 不太準導致的誤差.
只執行產生亂數的迴圈的話, 我的電腦每秒可產生一千兩百萬個亂數.
(Core2 Duo 2.6Ghz 的 CPU 而已, 並不是什麼高檔的機器)
 板主 : 小樓
 > Visual Basic 6.0/VBA - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual Basic 6.0/VBA - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual Basic 6.0/VBA
1 阿戊 10670 
2 小樓 8650 
3 Jones 5270 
4 水瓶天賞 2340 
5 joe 2230 
6 史努比 1950 
7 阿呆紅 1440 
8 tt's 1250 
9 青衫 1150 
10 羅啟章 1020 
Visual Basic 6.0/VBA
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.125