[問題] Debug,無法顯示結果在畫面上
主要是綠色那一段,照理來講,for(i=1;i<300;i++)應該執行300次
然後printf 300次,如果說是程式碼寫錯,至少也應該會印一次才對
可是執行結果,一次也沒顯示.....
是哪裡有問題呢??
有板友願意幫看程式其他錯誤,我順道把公式寫上來好了,感謝=v="
┌X[i,1] ┐ ┌ b*X[i-1,k]┐
│X[i,2] │ │X[i-1,1] + b*X[i-1,k]│
│X[i,3] │ │X[i-1,2] + b*X[i-1,k]│
│.... │=│ .................. │
│X[i,k-1]│ │X[i-1,k-2] + b*X[i-1,k]│
│X[i,k] │ │X[i-1,k-1] + b*X[i-1,k]│
└ ┘ └ ┘
第一組[i-1]共97個數
第二組[i]的97個數要產生時,需利用第一組的數
X[前一組的數,前一組第幾個數]
這樣的公式需從後面往前算(因為計算第j個數,需利用第j-1個數來計算)
程式計算結果,從第303個之後的數180個0,但這是不可能發生的
只有當97個數全是0時,才會出現後面全0的狀態,但也就只有全0才會產出全0的狀況
這組公式中絕不可能出現這種狀況
不知道程式的錯誤在哪~.~
===========================================================
typedef unsigned long long b64;
#define DMOD(n,p)((n)%(p))
int main(void)
{
int i,mci;
int p=2147482621;
int b=1048148;
int k=97;
b64 tseed,seed[97];
seed[1] = 135792468;
for(i=2;i<=k;i++){
seed[i] = DMOD(1073741816 * seed[i-1],p);
}
for(i=1;i<300;i++){
if(++mci==k+1){
tseed=DMOD(b*seed[k],p);
for(j=k;j>1;j--){
seed[j]=DMOD(seed[j-1]+tseed,p);
}
seed[1]=tseed;
mci=1;
printf("第%d個隨機數的值為%lld\n",j,seed[mci]);
}
}
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.137.179
→
09/14 20:37, , 1F
09/14 20:37, 1F
→
09/14 21:07, , 2F
09/14 21:07, 2F
推
09/15 00:24, , 3F
09/15 00:24, 3F
→
09/15 09:48, , 4F
09/15 09:48, 4F
→
09/15 09:50, , 5F
09/15 09:50, 5F
推
09/15 10:35, , 6F
09/15 10:35, 6F
→
09/15 11:28, , 7F
09/15 11:28, 7F
※ 編輯: chrisjon 來自: 123.195.137.179 (09/15 11:50)
→
09/15 11:35, , 8F
09/15 11:35, 8F
推
09/15 12:04, , 9F
09/15 12:04, 9F
推
09/15 12:09, , 10F
09/15 12:09, 10F
第303之後的數,計算出來全是0,代表有問題....~.~(少一個"後"字)
修好了,原始程式碼改過,這裡的程式碼忘了改:p
※ 編輯: chrisjon 來自: 123.195.137.179 (09/15 12:25)
※ 編輯: chrisjon 來自: 123.195.137.179 (09/15 12:26)
→
09/15 12:26, , 11F
09/15 12:26, 11F
→
09/15 12:28, , 12F
09/15 12:28, 12F
推
09/15 12:42, , 13F
09/15 12:42, 13F
→
09/15 12:43, , 14F
09/15 12:43, 14F
→
09/15 16:34, , 15F
09/15 16:34, 15F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章