擲骰子並計次的問題

請各位高手幫我想想以下的問題:“模擬擲骰子的結果, 並紀錄各點數(1-6)的累積次數, 控制埠為擲骰子的次數, 輸出則包含每個點數的次數, 限定只能使用一個移位暫存器” , 我寫出了一個VI可順利執行(不好意思,寫法很幼稚園,自己看了都會想笑), 但是我用了六個移位暫存器…, 可以請各位幫我修改一下程式嗎?謝謝大家  擲骰子.vi

這程式只使用一個移位暫存器,我是覺得亂數的產生方式不用弄得那麼複雜,除非有特殊需求。

擲骰子(改).vi

![](upload://sLGEwvC7wWa5DlvT85LP2rU00Pk.jpeg)

liuyunan39414.9982638889

首先要先謝謝liuyunan的解答, 的確滿足了一個移位暫存器的限制要求, case迴圈內的寫法很漂亮(雖然我還沒學到case迴圈這一章), 但是您的亂數產生的方法似乎並不能真正模擬擲骰子的結果, 那就是每一個點數出現的機率要是一樣的, 在執行您的程式時(骰子丟六十萬次),結果如右:    我之所以要把亂數產生方法寫成這樣就是要確保每一個點數的出現機率是相同的, 我試過把我的亂數產生方式套進您的程式中,得到的結果會如右: 我個人認為這是比較接近真實世界的結果, 不過, 還是要非常感謝liuyunan的幫忙, 解決了我的疑問, 我還會繼續努力嘗試只用while loop和For loop來完成這個程式,

所以我才會說"除非有特殊需求",要確保每一個點數的出現機率是相同的其實也不用那麼複雜,我的程式改兩個數字就會跟你的程式跑的結果很接近了。

![](upload://f4Vzk2Z7Iy6kBdu0AsLkwYhWzBy.jpeg)

![](upload://7XdIUe7x6syMxpF5giDkDGbAXyT.jpeg)

那兩個數字設定的依據你可以找站長的文章,說明比較明白。

抱歉一時沒想太多,用了case迴圈其實是多餘的程式,可直接精簡如下:

![](upload://lqCMDkQKv2KjCMSRj5gzZ4tsN1d.jpeg)

![](upload://zbXCFUjDtEx9ZSAWyGfJNXpx6V1.jpeg)

liuyunan39415.6728703704

太感謝liuyunan大了, 我會努力體會你寫這個程式的邏輯的美麗的~~~(好像太濫情?)謝謝!!