c語言用函數(shù)生成20 c語言用函數(shù)生成20位數(shù)

rand函數(shù)生成10到20的隨機數(shù)

在C語言中使用rand函數(shù)生成10到20的隨機數(shù),需要包含stdlib.h頭文件,可以使用以下語句:

創(chuàng)新互聯(lián)從2013年創(chuàng)立,先為永修等服務建站,永修等地企業(yè),進行企業(yè)商務咨詢服務。為永修企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

x=rand()%(20-10+1)+10;

為了使用每次運行都能得到不同的隨機數(shù)序列,還應該在應用此句代碼的前面,使用:

srand(time(0));語句(需包含time.h頭文件)。

c語言隨機函數(shù)生成20位整數(shù),隨機刪除其中的11個數(shù),使得剩余的數(shù)據(jù)組成最大數(shù)和最小數(shù),求它們的差值

程序是C++的,但是只要改下頭文件,本身是C語言的。

思路都在程序中,VS2010編譯通過,功能實現(xiàn)。

望采納~

#include "stdafx.h"

#include stdio.h

#include stdlib.h

#include string.h

#include time.h

#include math.h

int _tmain(int argc, _TCHAR* argv[])

{

int data[20];

int max[9];

int min[9];

// 生成20位隨機數(shù)

srand((unsigned int)(time(NULL)));

for(int i = 0; i=19; i++)

{

int _data;

do

{

_data = rand() % 10;

}

while(_data == 0 i==19);

// ↑防止最高位生成0

data[i] = _data;

}

printf("Data:");

for(int i = 19; i= 0; i--)

{

printf("%d",data[i]);

}

printf("\n");

// 取得最大數(shù)

int flag = 20;

int _max = 0;

for(int i = 8; i = 0; i--)

{

for(int j = flag-1; j = i; j-- )

{

if(data[j] _max)

{

_max = data[j];

flag = j;

}

}

max[i] = _max;

_max = 0;

}

/*

思路:最高位對一個數(shù)的大小影響最大,所以在選擇范圍內(nèi)選取最大的最高位,

選取范圍,最高位,也就是第9位,可以在原始數(shù)的第20-9位選擇,因為必須

留下8個數(shù),防止后面沒得選了,所以遞推第N位選擇范圍是從N-1選取的位置

前一位到第N位,例如第3個數(shù)選在了第9位,那么第四個數(shù)只能選在第8位到

第4位。

*/

printf("Max:");

for(int i = 8; i= 0; i--)

{

printf("%d",max[i]);

}

printf("\n");

// 取得最小數(shù)

flag = 20;

int _min = 9;

for(int i = 8; i = 0; i--)

{

for(int j = flag-1; j = i; j-- )

{

if((data[j] _min i != 8)||(data[j] _min data[j] != 0))

{

_min = data[j];

flag = j;

}

}

min[i] = _min;

_min = 9;

}

/*

思路:同取得最大數(shù),只不過要防止最高位取到0

*/

printf("Min:");

for(int i = 8; i= 0; i--)

{

printf("%d",min[i]);

}

printf("\n");

// 求差值,因為數(shù)據(jù)9位數(shù),使用long

long lmax = 0,lmin = 0,diff = 0;

for(int i = 0; i=8; i++)

{

lmax += max[i] * pow((double)10, i);

lmin += min[i] * pow((double)10, i);

}

diff = lmax - lmin;

printf("Difference:%ld", diff);

printf("\n");

int _re;

scanf("%d",_re);

return 0;

}

C語言中隨意生成20個數(shù)字用什么函數(shù)啊

#include stdio.h

#include stdlib.h

#include unistd.h

#include time.h

/*產(chǎn)生一個start~end區(qū)間中的隨機數(shù),然后返回該隨機值*/

int produce_rand(int start, int end);

int main(void)

{

int num = 0;

int i = 0;

//for test

for(i=0; i20; i++)

{

num = produce_rand(100,200);

/*注意這里的休眠是必要的,因為是用time(NULL)作為種子,如果直接運行,那么很有可能產(chǎn)生的多個一樣的隨機數(shù)*/

sleep(1);

printf("%d\n",num);

}

return 0;

}

int produce_rand(int start, int end)

{

int rand_num;

int start_t;

int end_t;

//確定參數(shù)范圍,確保start_t=end

(start=end)?(start_t=start,end_t=end):(start_t=end,end_t=start);

//time(NULL)為隨機種子,播種子

srand((unsigned)time(NULL));

//產(chǎn)生隨機數(shù)

rand_num =rand()%(end_t-start_t+1)+start_t;

return rand_num;

}

C語言編程:試用隨機函數(shù)產(chǎn)生20個〔100,1000〕之間的整數(shù),并按從小到大的順序,按每行10個數(shù)的格式輸出

先定義隨機函數(shù)f

然后定義一個整數(shù)變量a

定義一個數(shù)組(長度20個數(shù))b

*套用隨機函數(shù)產(chǎn)生整數(shù)賦予變量a

比較變量a的值是否在100~1000,是就依次放到數(shù)組中,不是就繼續(xù)用隨機函數(shù)產(chǎn)生整數(shù)比較。

循環(huán)從*開始的步驟,可以利用for來確定直到b(19)也被賦值

然后用起泡法排序數(shù)組b中的20個數(shù)

最后輸出的時候用循環(huán),b(0)~b(9)后輸出回車,接著輸出b(10)~b(19)

程序懶得寫了

而且說實話我不知道隨機函數(shù)在c怎么寫。。。

在matlab里直接可以調(diào)用的說。。

C語言編程考試題 用隨機函數(shù)產(chǎn)生并輸出20個[10,99]的隨機整數(shù),輸出其中大于這20個數(shù)的平均值的數(shù)。

#includestdio.h

#includestdlib.h

#includetime.h

int main(void)

{

srand(time(0));

int i=0; //用于下面的循環(huán)

int a[20]={0}; //用于存儲產(chǎn)生的20個隨機數(shù)。

double ave=0; //用于求20個隨機數(shù)的和,為了求他們的平均數(shù)。

for(i =0;i=19;i++)

{

a[i]=rand()%90+10; //rand()%90產(chǎn)生0-89的隨機數(shù),加上10后就是10-99的隨機數(shù)。

ave=ave+a[i];

printf("第%d個隨機數(shù)是:\n",i+1,a[i]);

}

ave=ave/20;

for(i =0;i=19;i++) //打印大于平均數(shù)值的隨機數(shù);

{

if(a[i]ave)

{

printf("第%d個隨機數(shù)等于%lf大于平均數(shù)%lf\n",i+1,a[i],ave)

}

}

return 0;

}

結(jié)果:

第1個隨機數(shù)是:34

第2個隨機數(shù)是:32

第3個隨機數(shù)是:86

第4個隨機數(shù)是:20

第5個隨機數(shù)是:86

第6個隨機數(shù)是:43

第7個隨機數(shù)是:26

第8個隨機數(shù)是:65

第9個隨機數(shù)是:98

第10個隨機數(shù)是:57

第11個隨機數(shù)是:98

第12個隨機數(shù)是:59

第13個隨機數(shù)是:72

第14個隨機數(shù)是:27

第15個隨機數(shù)是:25

第16個隨機數(shù)是:55

第17個隨機數(shù)是:53

第18個隨機數(shù)是:83

第。。。。。。。。

C語言中如何用rand()函數(shù)產(chǎn)生20-90的隨機整數(shù)

rand和srand的用法

首先我們要對rand&srand有個總體的看法:srand初始化隨機種子,rand產(chǎn)生隨機數(shù),下面將詳細說明。

rand(產(chǎn)生隨機數(shù))

表頭文件: #includestdlib.h

定義函數(shù) :int rand(void)

函數(shù)說明 :

因為rand的內(nèi)部實現(xiàn)是用線性同余法做的,他不是真的隨機數(shù),只不過是因為其周期特別長,所以有一定的范圍里可看成是隨機的,rand()會返回一隨機數(shù)值,范圍在0至RAND_MAX 間。在調(diào)用此函數(shù)產(chǎn)生隨機數(shù)前,必須先利用srand()設(shè)好隨機數(shù)種子,如果未設(shè)隨機數(shù)種子,rand()在調(diào)用時會自動設(shè)隨機數(shù)種子為1。rand ()產(chǎn)生的是假隨機數(shù)字,每次執(zhí)行時是相同的。若要不同,以不同的值來初始化它.初始化的函數(shù)就是srand()。

返回值:

返回0至RAND_MAX之間的隨機整數(shù)值,RAND_MAX的范圍最少是在32767之間(int),即雙字節(jié)(16位數(shù))。若用unsigned int 雙字節(jié)是65535,四字節(jié)是4294967295的整數(shù)范圍。

0~RAND_MAX每個數(shù)字被選中的機率是相同的。

范例:

/* 產(chǎn)生介于1 到10 間的隨機數(shù)值,此范例未設(shè)隨機數(shù)種子,完整的隨機數(shù)產(chǎn)生請參考

srand()*/

#includestdlib.h

main()

{

int i,j;

for(i=0;i10;i++)

{

j=1+(int)(10.0*rand()/(RAND_MAX+1.0));

printf("%d ",j);

}

}

執(zhí)行:

9 4 8 8 10 2 4 8 3 6

9 4 8 8 10 2 4 8 3 6 //再次執(zhí)行仍然產(chǎn)生相同的隨機數(shù)

srand(設(shè)置隨機數(shù)種子)

表頭文件:#includestdlib.h

定義函數(shù):void srand (unsigned int seed);

函數(shù)說明:

srand()用來設(shè)置rand()產(chǎn)生隨機數(shù)時的隨機數(shù)種子。參數(shù)seed必須是個整數(shù),通??梢岳胓eypid()或time(0)的返回值來當做seed。如果每次seed都設(shè)相同值,rand()所產(chǎn)生的隨機數(shù)值每次就會一樣。

范例

/* 產(chǎn)生介于1 到10 間的隨機數(shù)值,此范例與執(zhí)行結(jié)果可與rand()參照*/

#includetime.h

#includestdlib.h

main()

{

int i,j;

srand((int)time(0));

for(i=0;i10;i++)

{

j=1+(int)(10.0*rand()/(RAND_MAX+1.0));

printf(" %d ",j);

}

}

執(zhí)行:與rand范例比較

5 8 8 8 10 2 10 8 9 9

2 9 7 4 10 3 2 10 8 7

又或:

用"int x = rand() % 100;"來生成 0 到 100 之間的隨機數(shù)這種方法是不或取的,比較好的做法是: j=(int)(n*rand()/(RAND_MAX+1.0))產(chǎn)生一個0到n之間的隨機數(shù)

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;

}

除以上所說的之外,補充一點就是srand這個函數(shù)一定要放在循環(huán)外面或者是循環(huán)調(diào)用的外面,否則的話得到的是相同的數(shù)字。

MSDN中的例子。

// crt_rand.c

// This program seeds the random-number generator

// with the time, then displays 10 random integers.

//

#include stdlib.h

#include stdio.h

#include time.h

int main( void )

{

int i;

// Seed the random-number generator with current time so that

// the numbers will be different every time we run.

//

srand( (unsigned)time( NULL ) );

// Display 10 numbers.

for( i = 0; i 10;i++ )

printf( " %6d\n", rand() );

printf("\n");

// Usually, you will want to generate a number in a specific range,

// such as 0 to 100, like this:

{

int RANGE_MIN = 0;

int RANGE_MAX = 100;

for (i = 0; i 10; i++ )

{

int rand100 = (((double) rand() /

(double) RAND_MAX) * RANGE_MAX + RANGE_MIN);

printf( " %6d\n", rand100);

}

}

總結(jié):

我們知道rand()函數(shù)可以用來產(chǎn)生隨機數(shù),但是這不是真真意義上的隨機數(shù),是一個偽隨機數(shù),是根據(jù)一個數(shù),我們可以稱它為種了,為基準以某個遞推公式推算出來的一系數(shù),當這系列數(shù)很大的時候,就符合正態(tài)公布,從而相當于產(chǎn)生了隨機數(shù),但這不是真正的隨機數(shù),當計算機正常開機后,這個種子的值是定了的,除非你破壞了系統(tǒng),為了改變這個種子的值,C提供了 srand()函數(shù),它的原形是void srand( int a) 功能是

初始化隨機產(chǎn)生器既rand()函數(shù)的初始值,即使把種子的值改成a; 從這你可以看到通過sand()函數(shù),我們是可以產(chǎn)生可以預見的隨機序列,

那我們?nèi)绾尾拍墚a(chǎn)生不可預見的隨機序列呢?我們可能常常需要這樣的隨機序列,是吧。利用srand((unsign)(time(NULL))是一種方法,因為每一次運行程序的時間是不同的,對了,你知道time() 函數(shù)的功能是返回從1970/01/01到現(xiàn)在的秒數(shù)的吧,可能這個起始時間不正確,你查一下對不對吧,C還提供了另一個更方便的函數(shù), randomize()

原形是void randomize(),功能是用來始初rand() 的種子的初始值,而且該值是不確定的,它相當于srand((unsign)(time(NULL)) 不過應注意的是randomize()的功能要通過time來實現(xiàn)所以在調(diào)用它時頭文件要包含time.h罷了

網(wǎng)站名稱:c語言用函數(shù)生成20 c語言用函數(shù)生成20位數(shù)
網(wǎng)頁路徑:http://muchs.cn/article22/docojcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、App設(shè)計、全網(wǎng)營銷推廣、網(wǎng)站收錄、網(wǎng)站建設(shè)、面包屑導航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站