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

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

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

加入日期: Nov 2003
您的住址: 銀河-太陽系-地球-亞洲-中華民國
文章: 2,579
b1 = Int(Rnd() * num) + 1 '亂數選號
Debug.Print b1 <==此句程式碼新增加作測式

發現Debug.Print b1
若是跑出之前的號碼
此程式會從39、38、37、36、35
這幾個號碼選出來
我懷疑
這個程式
39、38、37、36、35這幾個號碼出現機率特別高
這是我的懷疑
沒把握
     
      
__________________
☆★☆★☆★☆★☆★☆★☆★☆★☆★
舊 2008-09-21, 10:07 PM #31
回應時引用此文章
=風=離線中  
twu2
Power Member
 

加入日期: Jan 2002
您的住址: Taipei
文章: 661
這樣說的話, 你是懷疑 VB 的 Rnd() 的亂數表不夠亂了? (難道自己寫一個亂數產生的函式就能保證一定夠亂了嗎?)
基本上這與上頭程式的邏輯無關吧.
 
__________________

Tommy 碎碎念...
舊 2008-09-21, 10:16 PM #32
回應時引用此文章
twu2離線中  
8:5
Major Member
 

加入日期: Dec 2002
您的住址: 謎
文章: 265
這個程式看起來沒甚麼問題。
舊 2008-09-21, 10:18 PM #33
回應時引用此文章
8:5離線中  
slamcar
Advance Member
 

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

引用:
作者=風=
b1 = Int(Rnd() * num) + 1 '亂數選號
Debug.Print b1 <==此句程式碼新增加作測式

發現Debug.Print b1
若是跑出之前的號碼
此程式會從39、38、37、36、35
這幾個號碼選出來
我懷疑
這個程式
39、38、37、36、35這幾個號碼出現機率特別高
這是我的懷疑
沒把握



以"理論"來看的話,若Randomize、rnd有效,

測試數量大的話,每個數中的機率,應該是幾近相同的。

如果您不相信Randomize、rnd的話,

那,機率就是不相同的。
舊 2008-09-21, 10:20 PM #34
回應時引用此文章
slamcar離線中  
53346
*停權中*
 
53346的大頭照
 

加入日期: Oct 2001
您的住址: 鬼島-高譚市
文章: 5,987
引用:
作者slamcar
這是ok的。因為假設第一次抽中20
ball(b1) = ball(num)
>>ball(20) = ball(39)--->ball(20)會等於39
so~ball(1~38)裡是1~19、39、21~38,
20被排除了,39取代20,要抽中39的話,只要再抽中一次20就是了。


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

我不太能理解的是這個for迴圈中ball(b1)=ball(num)
這行不就一直等於39不會改變嗎
那這麼做的意義是什麼??
他下面那行num = num - 1不就也沒有意義??
舊 2008-09-21, 10:24 PM #35
回應時引用此文章
53346離線中  
michelle_lai529
*停權中*
 

加入日期: Dec 2005
文章: 21
我的寫法,模擬洗牌發牌方式,機率應該比較接近實際吧,參考看看吧

Lotto = rnd_plus( 6, 49 ) '49選6

Function rnd_plus( Vquantity , Vrange )
Randomize
ReDim hand_card(Vquantity)
ReDim card(Vrange)
for i = 1 to Vrange
card(i) = i
next

for j = 1 to Vrange
chang_1 = int((Vrange * Rnd) + 1)
chang_2 = int((Vrange * Rnd) + 1)
temp_card = card(chang_1)
card(chang_1) = card(chang_2)
card(chang_2) = temp_card
next

for k = 1 to Vquantity
hand_card(k) = card(k)
next
rnd_plus = hand_card
End Function

此文章於 2008-09-21 10:27 PM 被 michelle_lai529 編輯.
舊 2008-09-21, 10:24 PM #36
回應時引用此文章
michelle_lai529離線中  
slamcar
Advance Member
 

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

引用:
作者53346
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

我不太能理解的是這個for迴圈中ball(b1)=ball(num)
這行不就一直等於39不會改變嗎
那這麼做的意義是什麼??
他下面那行num = num - 1不就也沒有意義??


如果想不通,您可以拿一張紙,寫下1~39,

然後,step by step的執行它的程式,應該就會了解。

仔細想想,您就會懂了。

※ball(b1)=ball(num)是把被抽中的數,用被排除掉的數字(num)代替。
※num = num - 1,則是控制剩下數字的數量,39、38、37.........
舊 2008-09-21, 10:36 PM #37
回應時引用此文章
slamcar離線中  
=風=
Golden Member
 
=風=的大頭照
 

加入日期: Nov 2003
您的住址: 銀河-太陽系-地球-亞洲-中華民國
文章: 2,579
看來我弄錯的機會很高
先說聲抱歉
明天再來好好想一想
__________________
☆★☆★☆★☆★☆★☆★☆★☆★☆★
舊 2008-09-21, 10:37 PM #38
回應時引用此文章
=風=離線中  
blake348
Power Member
 

加入日期: Mar 2005
文章: 566
這想法基本上沒有問題巴? 我在一些基礎程式的書上也有看到~
__________________
極速禁地NFSPC 歡迎光臨台灣最大賽車遊戲社群http://www.nfspc.tw


舊 2008-09-21, 10:42 PM #39
回應時引用此文章
blake348離線中  
Statics
Major Member
 
Statics的大頭照
 

加入日期: Sep 2001
文章: 262
引用:
作者michelle_lai529
我的寫法,模擬洗牌發牌方式,機率應該比較接近實際吧,參考看看吧

這樣的作法會不會讓前面6個的出現機率偏高呢?
舊 2008-09-21, 10:53 PM #40
回應時引用此文章
Statics離線中  


    回應


POPIN
主題工具

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

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



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


vBulletin Version 3.0.1
powered_by_vbulletin 2025。