→ james732:0星至5星的理論張數是多少呢? 04/15 18:14
→ azureblaze:(float)rand() / 32767.0f <= 0.3f? 04/15 18:15
推 ddavid:樓上的方法是不行的,真的很在意的話就只取到32759這樣,當 04/15 18:17
→ ddavid:產生出大於32759的值就重取,反正機率很低。 04/15 18:17
→ LPH66:插隊不好意思 ._. 04/15 18:18
→ ddavid:我說的不行是二樓這樣,被插推了XD 04/15 18:18
推 ericinttu:我想問: rand()%2>0 跟 rand()>16383 有什麼不同? 04/15 18:36
→ ericinttu:後者真的會比前者準嗎? 04/15 18:36
→ tropical72:if(double(rand())/RAMD_MAX <= 0.3) // 30%; 可嗎? 04/15 18:55
推 ddavid:就這個例子來說是沒有什麼不同,但是當你要取到x個值,用後 04/15 18:55
→ ddavid:面的寫法就要寫(x-1)個if,而且你還要事先把每個32767/x*i 04/15 18:56
→ ddavid:都寫出來(或至少算32767/x然後又額外花時間一次次加)給if 04/15 18:57
→ ddavid:用XD 04/15 18:57
→ ddavid:rand()直接產生出來的值是整數這件事才是重點,不管你怎樣 04/15 18:58
→ ddavid:掛(float)或(double)去偽裝也不能改變它的值只會落在格點上 04/15 18:58
→ ddavid:而非連續函數這件事 04/15 18:59
→ ddavid:用rand()可以產生0到9而你想要的值是0, 1, 2為例,你再怎樣 04/15 19:00
→ ddavid:掛(double),除起來也只會是0.0 0.1 0.2 ~ 0.9,三種值之中 04/15 19:01
→ ddavid:始終有一個會分到4個而另兩個只能分到3個 04/15 19:02
→ james732:我跑出來的答案是730,答案是這個嗎? 04/15 19:08
推 ericinttu:樓上算出期望值還是跑模擬的? 04/15 19:13
→ james732:模擬出來的 不知道這樣對不對 XD 04/15 19:13
推 ddavid:話說如果真的要強一點的亂數又不想自己寫,有用.Net的話 04/15 19:16
→ ddavid:RNGCryptoServiceProvider可以考慮看看XD 04/15 19:16
→ kyoiku:啥是.NET,@@? 目前剛看到第五章物件,太深入的還不會 04/15 19:20
→ kyoiku:我自學C++的目的主要是好奇程式在幹嗎和要解數學問題 04/15 19:22
推 ddavid:別太在意,等你真的用得上它時你應該就有實力知道它是啥了 04/15 19:27
推 ddavid:沒用.Net還是可以直接去找人家寫好的Library來用就行了 04/15 19:32
→ ddavid:如果對數學跟程式真的非常有興趣,也可以自己去讀Knuth的 04/15 19:34
→ ddavid:The Art of Computer Programming, volume 2裡面的亂數產生 04/15 19:34
→ ddavid:器看看,然後再去看密碼學裡面用的版本XD 04/15 19:35
→ ddavid:前者是.Net裡面Random這class實作的演算法這樣 04/15 19:35
→ DrStein:衝失敗不是暴武回到零星嗎 怎只後退一星? 04/15 19:54
推 LPH66:其實是看遊戲設定... 04/15 19:57
推 yoco315:衝失敗不是整把武器消失嗎 怎只退後一星? 04/15 21:10
推 KanoLoa:衝失敗不是整個角色重置嗎 怎...... 04/15 21:19
推 ddavid:衝失敗不是玩家砍掉重練嗎,怎...... 04/15 21:35
→ james732:回到0星的結果約1476.18次,比想像中的還要少 XDD 04/15 22:03