/* rand example: guess the number */
#include <stdio.h> /* printf, scanf, puts, NULL */
#include <stdlib.h> /* srand, rand */
#include <math.h>
unsigned Rand()
{
// 利用 y = 5000*(sin((x-0.5)*π)+1) 產生亂數, x = [0~1];
double x = ((double)rand())/RAND_MAX;
unsigned y = (unsigned)((sin((2*x-0.5)*M_PI)+1)*5000); // y = [0~10000)
if(y >= 10000) return Rand(); // 確保亂數值在 [0~10000)之間
return y;
}
int main(int argc, char *argv[])
{
unsigned count[10] = {0,0,0,0,0,0,0,0,0,0}; // 亂數在該區間出現次數
// count[0] = [0~1000)
// count[1] = [1000~2000)
// ...
// count[9] = [9000~10000)
// 產生一萬次亂數,並記錄亂數在某區間出現個數
for(unsigned i = 0 ; i < 10000u ; ++i)
{
++count[Rand()/1000];
}
// 顯示結果
for(unsigned i = 0 ; i < 10u ; ++i)
{
printf("[%05u~%05u) 出現 %u 次\n", i*1000 , (i+1)*1000 , count[i]);
}
return EXIT_SUCCESS;
}
LyogcmFuZCBleGFtcGxlOiBndWVzcyB0aGUgbnVtYmVyICovCiNpbmNsdWRlIDxzdGRpby5oPiAgICAgIC8qIHByaW50Ziwgc2NhbmYsIHB1dHMsIE5VTEwgKi8KI2luY2x1ZGUgPHN0ZGxpYi5oPiAgICAgLyogc3JhbmQsIHJhbmQgKi8KI2luY2x1ZGUgPG1hdGguaD4KCnVuc2lnbmVkIFJhbmQoKQp7CiAgICAvLyDliKnnlKggeSA9IDUwMDAqKHNpbigoeC0wLjUpKs+AKSsxKSDnlKLnlJ/kuoLmlbjvvIwgeCA9IFswfjFdOyAKICAgICAKICAgIGRvdWJsZSB4ID0gKChkb3VibGUpcmFuZCgpKS9SQU5EX01BWDsKICAgIAogICAgdW5zaWduZWQgeSA9ICh1bnNpZ25lZCkoKHNpbigoMip4LTAuNSkqTV9QSSkrMSkqNTAwMCk7ICAvLyB5ID0gWzB+MTAwMDApCiAgICAKICAgIGlmKHkgPj0gMTAwMDApIHJldHVybiBSYW5kKCk7IC8vIOeiuuS/neS6guaVuOWAvOWcqCBbMH4xMDAwMCnkuYvplpMgICAgCiAgICByZXR1cm4geTsgICAKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogICAgdW5zaWduZWQgY291bnRbMTBdID0gezAsMCwwLDAsMCwwLDAsMCwwLDB9OyAgLy8g5LqC5pW45Zyo6Kmy5Y2A6ZaT5Ye654++5qyh5pW4IAogICAgLy8gY291bnRbMF0gPSBbMH4xMDAwKQogICAgLy8gY291bnRbMV0gPSBbMTAwMH4yMDAwKSAKICAgIC8vIC4uLgogICAgLy8gY291bnRbOV0gPSBbOTAwMH4xMDAwMCkKICAgIAogICAgLy8g55Si55Sf5LiA6JCs5qyh5LqC5pW477yM5Lim6KiY6YyE5LqC5pW45Zyo5p+Q5Y2A6ZaT5Ye654++5YCL5pW4IAogICAgZm9yKHVuc2lnbmVkIGkgPSAwIDsgaSA8IDEwMDAwdSA7ICsraSkKICAgIHsKICAgICAgICArK2NvdW50W1JhbmQoKS8xMDAwXTsgICAgICAgCiAgICB9IAogICAgCiAgICAvLyDpoa/npLrntZDmnpwKICAgIGZvcih1bnNpZ25lZCBpID0gMCA7IGkgPCAxMHUgOyArK2kpCiAgICB7CiAgICAgICAgcHJpbnRmKCJbJTA1dX4lMDV1KSDlh7rnj74gJXUg5qyhXG4iLCBpKjEwMDAgLCAoaSsxKSoxMDAwICwgY291bnRbaV0pOyAgICAKICAgIH0KIAogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfQo=