PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
=風=
Golden Member
 
=風=的大頭照
 

加入日期: Nov 2003
您的住址: 銀河-太陽系-地球-亞洲-中華民國
文章: 2,579
Cool 能看出這個簡單程式有什麼問題的人絕對是個高手

會公佈答案
但在公佈答案前
想看看那些高手可以看出問題點
能看出來
真的很不簡單
第一次看到這個程式
發覺寫這程式的人真是利害
樂透程式碼可以寫到這麼短
後來仔細研究才發現這程式碼絕對不能拿來跑樂透
這是個vb6的程式
程式如下

Option Base 1
'樂透,39號取出6個號碼
Private Sub Form_Load()
Dim ball(39) As Integer
Dim i, b1, num As Integer
Randomize
'把球編號 1至39號
For i = 1 To 39
ball(i) = i
Next

num = 39
For i = 0 To 5
b1 = Int(Rnd() * num) + 1 '亂數選號
Text1(i).Text = ball(b1) '選中的號碼,放入Text1文字方塊中
ball(b1) = ball(num)
num = num - 1
Next i

End Sub
     
      
__________________
☆★☆★☆★☆★☆★☆★☆★☆★☆★
舊 2008-09-21, 08:06 PM #1
回應時引用此文章
=風=離線中  
elodie319
*停權中*
 

加入日期: Nov 2005
文章: 201
有可能出現5個39號嗎
 
舊 2008-09-21, 08:20 PM #2
回應時引用此文章
elodie319離線中  
peter liou
Power Member
 
peter liou的大頭照
 

加入日期: Feb 2005
您的住址: 棺材板的故鄉
文章: 556
它怎麼沒做號碼重覆檢查?
__________________
29年煙齡 100.01.23 戒除滿四年
98.07.12 14:11 再添丁 3195g 50cm
舊 2008-09-21, 08:23 PM #3
回應時引用此文章
peter liou離線中  
阿宅
*停權中*
 
阿宅的大頭照
 

加入日期: Dec 2006
您的住址: 大鵰村
文章: 12
如果Rnd() 這函數回傳介於0~1之間的話
那絕對不會選到....質數...
應該說很的數值都無法乘出

應該用
(int)(Rnd()*1000)%39+1
會比較好.....

此文章於 2008-09-21 08:31 PM 被 阿宅 編輯.
舊 2008-09-21, 08:27 PM #4
回應時引用此文章
阿宅離線中  
=風=
Golden Member
 
=風=的大頭照
 

加入日期: Nov 2003
您的住址: 銀河-太陽系-地球-亞洲-中華民國
文章: 2,579
引用:
作者elodie319
有可能出現5個39號嗎

我前面說過
發覺寫這程式的人真是利害
樂透程式碼可以寫到這麼短
所以不可能有這麼大的漏洞
__________________
☆★☆★☆★☆★☆★☆★☆★☆★☆★
舊 2008-09-21, 08:28 PM #5
回應時引用此文章
=風=離線中  
李麥科
*停權中*
 

加入日期: Jul 2008
文章: 51
引用:
作者阿宅
如果Rnd() 這函數回傳介於0~1之間的話
那絕對不會選到....質數...
應該說很的數值都無法乘出

應該用
(int)(Rnd()*1000)%39+1
會比較好.....

啊宅你還會寫程式

我連程式都不會寫........不能當好人
舊 2008-09-21, 08:35 PM #6
回應時引用此文章
李麥科離線中  
八佾劍舞
Regular Member
 

加入日期: Sep 2004
文章: 60
所以阿宅果然有真材實料
__________________
記得同燒此夜香,人在迴廊,月在迴廊;
而今獨自睚昏黃,行也思量,坐也思量。
舊 2008-09-21, 08:43 PM #7
回應時引用此文章
八佾劍舞離線中  
阿宅
*停權中*
 
阿宅的大頭照
 

加入日期: Dec 2006
您的住址: 大鵰村
文章: 12
哈...我好像猜錯了...




我還是沒資格當好人...
舊 2008-09-21, 08:48 PM #8
回應時引用此文章
阿宅離線中  
=風=
Golden Member
 
=風=的大頭照
 

加入日期: Nov 2003
您的住址: 銀河-太陽系-地球-亞洲-中華民國
文章: 2,579
引用:
作者阿宅
如果Rnd() 這函數回傳介於0~1之間的話
那絕對不會選到....質數...
應該說很的數值都無法乘出

應該用
(int)(Rnd()*1000)%39+1
會比較好.....

我剛run一次
跑出來的答案有31、7是值數
36
31
10
30
34
7
__________________
☆★☆★☆★☆★☆★☆★☆★☆★☆★
舊 2008-09-21, 08:50 PM #9
回應時引用此文章
=風=離線中  
slamcar
Advance Member
 

加入日期: Mar 2002
文章: 304
Talking

引用:
作者peter liou
它怎麼沒做號碼重覆檢查?

因為它不會重覆啊~~
舊 2008-09-21, 08:54 PM #10
回應時引用此文章
slamcar離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是11:40 AM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。