[問題] 一個求證rand()範圍的問題
如題最近在研究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
12/03 20:26, 1F
→
12/03 20:42, , 2F
12/03 20:42, 2F
→
12/03 22:01, , 3F
12/03 22:01, 3F
→
12/03 22:04, , 4F
12/03 22:04, 4F
→
12/03 22:05, , 5F
12/03 22:05, 5F
推
12/03 22:37, , 6F
12/03 22:37, 6F
→
12/03 22:38, , 7F
12/03 22:38, 7F
→
12/04 00:00, , 8F
12/04 00:00, 8F
推
12/04 01:22, , 9F
12/04 01:22, 9F
推
12/04 19:42, , 10F
12/04 19:42, 10F
→
12/04 19:43, , 11F
12/04 19:43, 11F
推
12/04 19:55, , 12F
12/04 19:55, 12F
→
12/04 19:56, , 13F
12/04 19:56, 13F