首先一樓代碼是可以的,只是num
我們提供的服務(wù)有:網(wǎng)站制作、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、烏蘭ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的烏蘭網(wǎng)站制作公司
=
rand()%10的10后漏了個(gè)0;
詳細(xì)回答你的疑惑:
1、你要用的隨機(jī)函數(shù)rand是包含在庫(kù)文件stdib.h中,如果不引用#include當(dāng)然出錯(cuò)!:
error
C2065:
'rand'
:
undeclared
identifier
2、rand是個(gè)偽隨機(jī)函數(shù),如果不用srand每一次運(yùn)行程序產(chǎn)生的隨機(jī)數(shù)一樣的,
因此使用一個(gè)時(shí)間種子函數(shù)srand,它的參數(shù)是電腦的系統(tǒng)時(shí)間,該函數(shù)包含在庫(kù)文件time.h中,這樣由于每次運(yùn)行程序的時(shí)間不同,種子不同,生成的隨機(jī)數(shù)也不同,更接近真正的隨機(jī)數(shù)。
希望能幫到你!
srand()函數(shù)是C語(yǔ)言中產(chǎn)生隨機(jī)數(shù)的一個(gè)函數(shù)。
函數(shù)原型: void srand(unsigned seed)
功 ? ? ?能: 產(chǎn)生隨機(jī)數(shù)的起始發(fā)生數(shù)據(jù),和rand函數(shù)配合使用
頭 文 ?件: stdlib.h ? time.h
舉例如下:
#include?stdio.h
#include?stdlib.h
#include?time.h
int?main(void)
{
int?i;
time_t?t;
srand((unsigned)?time(t));
printf("Ten?random?numbers?from?0?to?99\n\n");
for?(i=0;?i10;?i++)
printf("%d\n",?rand()%100);
return?0;
}
運(yùn)行程序,會(huì)發(fā)現(xiàn)每次產(chǎn)生的隨機(jī)數(shù)都不一樣。這是因?yàn)檫@里采用了時(shí)間作為種子,而時(shí)間在每時(shí)每刻都不相同,所以就產(chǎn)生了"隨機(jī)"的隨機(jī)數(shù)了。所以,要想產(chǎn)生不同的隨機(jī)數(shù),在使用rand之前需要先調(diào)用srand。
要用srand()函數(shù)設(shè)置一個(gè)隨機(jī)數(shù)種子
例1:
#include stdlib.h
#include iostream
#include time.h
using namespace std;
int main()
{
srand( (unsigned)time( NULL ) ); // 隨機(jī)數(shù)種子產(chǎn)生
int i=rand()%100-1; // 產(chǎn)生100以內(nèi)的隨機(jī)數(shù)并賦給i
coutiendl;
getchar();
return 0;
}
例2:
#include stdio.h
#include stdlib.h
main()
{
int seed=1000; // 種子
int i;
int m[16] ;
int nn=0;
double r;
printf("enter seed please\n");
scanf("%d",seed);
srand(seed); // 初始化隨機(jī)數(shù)生成器
for (i=0;i=15;i++) m[i] = 0;
while (nn 10 ){
// r 是雙精度浮點(diǎn)隨機(jī)數(shù),范圍0.0到1.0
r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) );
i =(int) ( r * 15.0);
if (m[i] == 0) {
m[i] = 1; nn = nn + 1;
printf("%d ",i);
};
}
}
你好!
完整的代碼,紅圈處就是從上面100個(gè)數(shù)字中抽取到的數(shù)字:
#include?stdio.h
#includestdlib.h??????????????????//生成隨機(jī)數(shù)用?
#includetime.h????????????????????//利用時(shí)間生成種子?
#includemath.h????????????????????
int?main()
{
int?i;
??int?a[100];
srand(?time(NULL)?);?????????//生成種子?
for(i=0;i100;i++)
{
a[i]=rand()%1000+1000;??????//生成一個(gè)小于1000的隨機(jī)數(shù)
???//然后加1000,變成?1000?-?2000之間的數(shù)?
printf("%d??",a[i]);???????//打印?
}
i=rand()%100;??????????????//隨機(jī)抽取其中的一個(gè)數(shù)?
printf("\n抽取到的是:%d\n",a[i]);//打印?
return?0;?
}
c語(yǔ)言中產(chǎn)生隨機(jī)數(shù)的相關(guān)函數(shù)主要包括srand和rand函數(shù),兩者配合生成隨機(jī)數(shù)據(jù),測(cè)試代碼如下,
#includestdio.h
#include stdlib.h
#include time.h
void main()
{
int i=0,j=0;
int p[5][5]={0};
srand(time(NULL));
for(i=0;i5;i++)
for(j=0;j5;j++)
p[i][j]=rand()%100+1;//產(chǎn)生1-100的隨機(jī)數(shù)存入數(shù)組p中
printf("二維數(shù)組p為:\n");
for(i=0;i5;i++)
{
for(j=0;j5;j++)
printf("%d\t",p[i][j]);
printf("\n");
}
}
一般srand和rand配合使用產(chǎn)生偽隨機(jī)數(shù)序列。rand函數(shù)在產(chǎn)生隨機(jī)數(shù)前,需要系統(tǒng)提供的生成偽隨機(jī)數(shù)序列的種子,rand根據(jù)這個(gè)種子的值產(chǎn)生一系列隨機(jī)數(shù)。如果系統(tǒng)提供的種子沒有變化,每次調(diào)用rand函數(shù)生成的偽隨機(jī)數(shù)序列都是一樣的。srand(unsigned seed)通過參數(shù)seed改變系統(tǒng)提供的種子值,從而可以使得每次調(diào)用rand函數(shù)生成的偽隨機(jī)數(shù)序列不同,從而實(shí)現(xiàn)真正意義上的“隨機(jī)”。通??梢岳孟到y(tǒng)時(shí)間來改變系統(tǒng)的種子值,即srand(time(NULL)),可以為rand函數(shù)提供不同的種子值,進(jìn)而產(chǎn)生不同的隨機(jī)數(shù)序列。