最近看宋勁杉的C語言學習資料,其中產生亂數的例子如下
#include <stdlib.h>
#define N 100000
int a[N];
void gen_random(int upper_bound)
{
int i;
for(i=0;i<N;i++)
a[i]=rand()%upper_bound;
}
int howmany(int value)
{
int count=0,i;
for (i=0;i<N;i++)
if(a[i]==value)
++count;
return count;
}
int main(void)
{
int i;
gen_random(10);
printf("value\thow many\n");
for(i=0;i<10;i++)
printf("%d\t%d\n",i,howmany(i));
return 0;
}
產生的統計結果始終如下:
value how many
0 10130
1 10072
2 9990
3 9842
4 10174
5 9930
6 10059
7 9954
8 9891
9 9958
我電腦上如此,資料上也是如此…真的是隨機的嗎,為什么統計的結果始終不變?
uj5u.com熱心網友回復:
https://bbs.csdn.net/topics/390659274uj5u.com熱心網友回復:
偽亂數。設定一個seed吧。 看看這樣是否可行。#include <stdlib.h>
#include <time.h>
#define N 100000
int a[N];
void gen_random(int upper_bound)
{
int i;
srand((unsigned int)time(NULL));
for(i=0;i<N;i++)
a[i]=rand()%upper_bound;
}
int howmany(int value)
{
int count=0,i;
for (i=0;i<N;i++)
if(a[i]==value)
++count;
return count;
}
int main(void)
{
int i;
gen_random(10);
printf("value\thow many\n");
for(i=0;i<10;i++)
printf("%d\t%d\n",i,howmany(i));
return 0;
}
uj5u.com熱心網友回復:
可以的,蟹蟹。uj5u.com熱心網友回復:
void gen_random(int upper_bound)
{
int i;
srand(time(NULL); //生成一個種子~
for(i=0;i<N;i++)
a[i]=rand()%upper_bound;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/221242.html
標籤:C語言
上一篇:如何實作QXlsx的實時存盤
