[問題] 一個求證rand()範圍的問題

看板C_and_CPP作者 (ice)時間12年前 (2013/12/03 19:55), 編輯推噓4(409)
留言13則, 8人參與, 最新討論串1/1
如題最近在研究C語言裡面rand() 看到一個例子可以求證rand的範圍 我實際執行程式之後 #include<stdio.h> #include<time.h> #include<stdlib.h> void main(void) { int i,a,max,min,no; srand(time(NULL)); no= 10; while (no > 0) { min= +999999; max= -999999; for (i=1;i<=no;i++) { a= rand(); if (max < a) max= a; if (min > a) min= a; } printf("no=%d,min=%d,max=%d\n", no, min, max); // pause; no*= 10; }// end while printf("END"); }// end main no=10,min=999999,max=1938784253 no=100,min=999999,max=2132274883 no=1000,min=999999,max=2145700264 no=10000,min=163351,max=2147380864 no=100000,min=36904,max=2147480501 no=1000000,min=141,max=2147482739 no=10000000,min=17,max=2147483626 no=100000000,min=66,max=2147483642 no=1000000000,min=4,max=2147483646 no=1410065408,min=0,max=2147483647 no=1215752192,min=1,max=2147483647 這邊我覺得奇怪的是這個程式看起來應該要無限回圈才對 他感覺最後上限是卡在int的最大值 no是不是也因為益位了導致最後乘出來的no反而變小了 不知是否有人有這樣的經驗 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.8.225

12/03 20:26, , 1F
unsigned int表示:
12/03 20:26, 1F

12/03 20:42, , 2F
不知道在想什麼的 code.
12/03 20:42, 2F

12/03 22:01, , 3F
你想得到什麼結果?
12/03 22:01, 3F

12/03 22:05, , 5F
這裡面不就告訴你範圍了
12/03 22:05, 5F

12/03 22:37, , 6F
這什麼爛例子 xDD
12/03 22:37, 6F

12/03 22:38, , 7F
你覺得你丟骰子10億次就一定能丟出1或6?
12/03 22:38, 7F

12/04 00:00, , 8F
不知道你想要表達什麼
12/04 00:00, 8F

12/04 01:22, , 9F
開 -O2或-O3玩玩看XD
12/04 01:22, 9F

12/04 19:42, , 10F
用step by step觀察數值不就知道了?
12/04 19:42, 10F

12/04 19:43, , 11F
no這樣乘一定爆的呀
12/04 19:43, 11F

12/04 19:55, , 12F
在no *= 10後面多加一行printf,就可以知道no最後的
12/04 19:55, 12F

12/04 19:56, , 13F
數值是-727379968,所以停了
12/04 19:56, 13F
文章代碼(AID): #1IdSQvEY (C_and_CPP)