查看完整版本: VB吃角子老虎程式設計問題
頁: [1]

orz745 發表於 2013-3-16 11:59 PM

VB吃角子老虎程式設計問題

本帖最後由 orz745 於 2013-3-17 12:02 AM 編輯

有一些問題想要請問各位大大
小弟剛開始學VB
老師一開始便給我們來了個下馬威
想考倒我們...
以下是題目,程式碼在附件中
煩請大大們幫忙解答一下~~
題目:
   1.在吃角子老虎程式中Sub generatefruit()內 列41 之 result(i) = 2 * (Fix(Rnd * 5) + 1) - 1 作用為何?為什麼要如此設計?
  若改成 result(i) = Fix(Rnd * 10) 會有什麼後果?
2.在吃角子老虎程式中Private Sub Timer1_Timer()內 列65到列68 作用為何?為什麼要如此設計?
  For i = 1 To 5
      result(i) = ((result(i) + 1) Mod 10)
      fruitpicture(i).Picture = LoadPicture(".\" & result(i) & ".bmp")
  Next i
3.在吃角子老虎程式中Private Sub Command1_Click()內 列27 之 Command1.Enabled = False 作用為何?為什麼要如此設計?
4.在吃角子老虎程式中Private Sub Command1_Click()內 列28 之 round = 100 可以設定成其他數值嗎?
  其限制為何?理由是什麼?
5.在吃角子老虎遊戲中是否中獎其實是決定於何時 (轉動開始還是轉動結束) ?
  程式中何以見得?其原理是什麼?
6.在吃角子老虎遊戲中三個7賠5倍;四個7賠10倍;五個7賠100倍,這樣老虎會吃虧嗎?
  請分別從上述各情況之機率是多少分別說明之?

抱歉小弟是第一次發文...如有觸犯版規煩請版主大大提醒指教謝謝


...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

darkjack 發表於 2013-3-17 08:58 AM

好一個作業文阿......只是我很想說,新手不是一個理由!平常上課你有沒有在聽?
我是本科系過來的,一般的老師會給作業就是有交到那種程度.....

1~4 你怎不動手測試看看 ?並且 debug ?
第五題我可以直接給你答案! 看亂數是在轉動前還是後! 答案就在這!
第六題 機率算法,本人數學不好無法給正確解答!

k50402k 發表於 2013-3-29 01:19 AM

本帖最後由 k50402k 於 2013-3-29 04:03 PM 編輯

前面問題已經有大大提示了
我就解解看最後一題吧
其實我也不確定這樣算是不是真的完全正確
但應該不會差太遠就是了XD

C X Y
代表C X 取 Y  (請翻數學課本,排列組合的單元)

3個7 可能結果
( (5!)/(3!*1!*1!) ) * C32 + ( (5!)/(3!*2!) ) * C31
=20*3+10*3
=60+30
=90 (種)

4個7 可能結果
( (5!)/(4!*1!) ) * C31
=5*3
=15 (種)

5個7 可能結果
( (5!)/(5!) )
=1 (種)

然後4種圖案 5個坑
所以總結果可以有4^5 = 1024 種

用期望值下去算,假設賭本1塊錢
(90*5+15*10+1*100)/1024
=700/1024 < 1
所以不會老虎餃子機不會賠本
===============================

昨天很晚回的,但是今天用程式跑了一下確定以上計算是正確的
至於最後會不會賠錢的問題,其實不用假設賭本

賭本*(90*5+15*10+1*100)/1024 < 賭本     這樣不會賠錢
經過移向
(90*5+15*10+1*100)/1024 < 1  結論還是不會賠錢

...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

ahway9988 發表於 2013-3-30 07:09 PM

有沒有觸犯版規我不知道,但如果我是版主,我定會為此立下版規:凡發求解作業題目都先扣30
至少你也為幾題寫下你的答案,不管對不對,再為你的解答是否有無問題作為發問吧
從文中看得出來你完全是懶人求答那一型的...

補充內容 (2013-3-30 07:13 PM):
另外載點掛了,無法為你的題目解答

chung809 發表於 2016-4-11 03:36 PM

本帖最後由 tsaichan 於 2016-4-11 09:50 PM 編輯

1.在吃角子老虎程式中Sub generatefruit()內 列41 之 result(i) = 2 * (Fix(Rnd * 5) + 1) - 1 作用為何?為什麼要如此設計?
   若改成 result(i) = Fix(Rnd * 10) 會有什麼後果?
Ans: 首先分析吃角子老虎程式中10張BMP的圖案:
      1. 暫態圖案0,2,4,6和8。暫態圖案互換可製造捲動的特效。
      2. 穩態圖案(1)香蕉,(3)草莓,(5)葡萄,(7)蘋果和(9)7
      3. VB的Rnd函數會傳回0~0.9999的亂數,則通過下列運算:
             0 <= (Rnd * 5) < 5
             利用Fix函數取整數,小數無條件捨去。
             0 <= Fix(Rnd * 5) <= 4
             1 <= (Fix(Rnd * 5) + 1) <= 5
             在0~9間產生奇數的亂數
             0 <= 2*(Fix(Rnd * 5) + 1) - 1 <= 9
      4. 所以 result(i) = 2 * (Fix(Rnd * 5) + 1) - 1 代表從穩態圖案中選出拉桿的結果。
      5. 若改成 result(i) = Fix(Rnd * 10) 會產生0~9的亂數,代表從暫態或穩態圖案中選出拉桿的結果,此結果可能
         出現半個水果
         或半個7的圖案。造成結果無法預測。
2.在吃角子老虎程式中Private Sub Timer1_Timer()內 列65到列68 作用為何?為什麼要如此設計?
   For i = 1 To 5
       result(i) = ((result(i) + 1) Mod 10)
       fruitpicture(i).Picture = LoadPicture(".\" & result(i) & ".bmp")
   Next i
Ans:
      1. 因為由題一知陣列result(i)的值是介於0~9間的奇數,但Private Sub Timer1_Timer()內是要製造暫態效果
         的,所以利用
         (result(i) + 1)將陣列result(i)的值轉為偶數。但暫態圖案是由0,2,4,6和8組成,所以利用
         ((result(i) + 1) Mod 10)將範圍限制在0~8之間。所以暫態圖案與穩態圖案循環產生最後停在穩態圖案。
      2. LoadPicture函數的引數是要載入圖形的檔名,(".\" & result(i) & ".bmp")代表圖形檔與吃角子老虎程式位於
         相同的路徑。

3.在吃角子老虎程式中Private Sub Command1_Click()內 列27 之 Command1.Enabled = False 作用為何?為什麼要如此設計?
Ans: 當滑鼠按下【拉桿】按鈕後,Command1.Enabled = False會讓【拉桿】按鈕失效。如此使用者才不會在捲動的過程中誤觸【拉桿】 
   造成round被重置。

4.在吃角子老虎程式中Private Sub Command1_Click()內 列28 之 round = 100 可以設定成其他數值嗎?
   其限制為何?理由是什麼?
Ans:  round 可以設成其他數值,數值越大【拉桿】後轉動時間越長。round必須是偶數同時是10的倍數,
       否則由題二知若為奇數則最後結果會停在暫態圖案。如果不是10的倍數則不會回到開始時設定的結果,如此獎金會
      算錯。


5.在吃角子老虎遊戲中是否中獎其實是決定於何時 (轉動開始還是轉動結束) ?
  程式中何以見得?其原理是什麼?
Ans: 亂數是在轉動前就產生完畢。中獎其實是決定於轉動開始前。由題二知result(i)在迴圈中會在0~9間循環,
     最後迴圈結束後會回到開始前的穩態圖案。但必須符合題四中round的限制。
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>
頁: [1]