作者fragmentwing (片翼碎夢)
看板C_Chat
標題Re: [閒聊] 1%的抽卡率抽100次機率是63.4%?
時間Mon Jun 3 23:19:52 2019
※ 引述《sqe123456z (\れをる大好き/)》之銘言:
: 欸不是,我覺得我數學不爛啊
: 雖然我大學讀日文系以後再也沒用到數學了,但是我當年學測也考了14級分欸
: 我剛剛看理科生看到這兩張
: 幹我想了好久都不知道這到底怎麼算出來的
: https://i.imgur.com/pdD98Fk.jpg
: https://i.imgur.com/hXudCD0.jpg
: 有沒有人能告訴我計算過程啊?
: 我的理解是手游抽卡,因為沒有限定數量
: 所以不管抽一百次還是一千次,抽中的機率應該都是1%啊
: 靠北我高中數學真的都還給老師了嗎?
: 這到底怎麼算的==
https://imgur.com/fs1T6T9
獻醜
原本想說要用log去算,發現超不準,只好直接算了
怕超過2*32次,就用10次和0.1的機率去算了
至少一次的機率==一次+兩次+...+N(抽的總次數)次
以下程式碼,才正式學C不到10天,請鞭小力點
#include<stdio.h>
#include<math.h>
int cntnis(int a,int b){
int top=1,bottom=1;
for(int i=1;i<=b;i++){
top*=(a-i+1);
bottom*=i;
}
int compute=top/bottom;
return compute;
}
double multi(double have,int havet,int nohavet){
double result=pow(have,havet)*pow((1.0-have),nohavet);
return result;
}
int main(){
int times,cntn,i;
double haveis,mulh,probability,expectation=0;
times=10;
haveis=0.1;
for(i=1;i<=times;i++){
cntn=cntnis(times,i);
mulh=multi(haveis,i,times-i);
probability=cntn*mulh;
printf("抽 %d 次中,抽中 %d 張的機率= %lf\n",times,i,probability);
expectation+=probability*i;
}
printf("抽 %d 次,機率 %.3lf 期望值為: %lf",times,haveis,expectation);
return 0;
}
--
即使祂每天因人們而墮入滾燙的熱水,麵神也不會製造出地獄來懲罰不信仰祂的人
我們崇拜麵神是出於敬佩與感謝,與生前死後諸利益得失皆無任何關係
阿麵~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.75.207.14 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1559575197.A.4F4.html
※ 編輯: fragmentwing (42.75.207.14 臺灣), 06/03/2019 23:22:55
推 kinomon: 二項分配不就好了嗎? 反正後面沒人在意 06/03 23:25
推 arrenwu: 我跟你說 這種事情,不要用C去做 06/03 23:27
→ kinomon: 不對 二項展開 說錯惹 06/03 23:28
→ fragmentwing: 發現抽100次 機率0.01還行 除了回報值有問題外 06/03 23:28
推 spw050693: 至少一次不是1減全部槓龜的機率嗎? 06/03 23:28
→ fragmentwing: 一樓,我是想說一項一項列出來,會比較清楚 06/03 23:28
→ fragmentwing: 6樓 兩個是一樣的 06/03 23:30
推 kinomon: 原來如此 06/03 23:30
→ fragmentwing: 2樓 我之前學的另一個是fortran 兩邊麻煩度差不多 06/03 23:33
推 arrenwu: 你需要的是...Python 06/03 23:33
→ fragmentwing: 不過fortran的格式我懂比較多 能輸出得整齊一點 06/03 23:34
推 arrenwu: 你程式會寫成這樣雞哩瓜拉的原因是因為 C 的標準函式庫太 06/03 23:36
→ arrenwu: 簡陋了 06/03 23:36
→ hinanaitenco: 這用matlab吧 06/03 23:41
→ aikotoba: 低階語言真的好煩 06/04 01:10
推 assss49: 請愛用python 大概可以減少1/2的程式碼 06/04 01:10
→ laechan: 我都用 mudlib 06/04 11:42
→ laechan: 可以試看看用遞迴的寫法可以少寫一堆東西 06/04 11:45
推 geroge0820: 覺得懷念 06/04 13:02
推 GTR12534: 別存成 cpp 卻用 C 的語法好爆==看了很頭痛 06/04 13:32