當前位置:首頁 » 編程語言 » rand隨機函數用法c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

rand隨機函數用法c語言

發布時間: 2023-01-26 23:03:03

『壹』 c語言中的rand()函數怎麼用

rand()

rand()函數用來產生隨機數,但是,rand()的內部實現是用線性同餘法實現的,是偽隨機數,由於周期較長,因此在一定范圍內可以看成是隨機的。

rand()會返回一個范圍在0到RAND_MAX(至少是32767)之間的偽隨機數(整數)。

在調用rand()函數之前,可以使用srand()函數設置隨機數種子,如果沒有設置隨機數種子,rand()函數在調用時,自動設計隨機數種子為1。隨機種子相同,每次產生的隨機數也會相同。

rand()函數需要的頭文件是:<stdlib.h>

rand()函數原型:int rand(void);

使用rand()函數產生1-100以內的隨機整數:int number1 = rand() % 100+1。

srand()

srand()函數需要的頭文件仍然是:<stdlib.h>

srand()函數原型:void srand (usigned int seed);

srand()用來設置rand()產生隨機數時的隨機數種子。參數seed是整數,通常可以利用time(0)或getpid(0)的返回值作為seed。

使用rand()和srand()產生1-100以內的隨機整數:

srand(time(0));

int number1 = rand() % 100+1。

『貳』 c語言之rand函數的使用

c語言中的rand隨機數函數,是按指定順序來產生的,在生成隨機數之前,在stdlib.h頭文件中,會初始化函數srand,根據隨機種子seed,來獲取隨機數,如果seed不變,每次運行得到的隨機數會是一樣的,因此,rand函數也被大家叫做偽隨機數。下面就來介紹下rand函數的使用

打開代碼編譯器,輸入如下所示的代碼片段

運行該代碼片段,得到10個隨機數,但是我們發現,不論運行幾次,生成的隨機數都是這10個,也就是說,在種子seed不變的情況下,生成的隨機數是偽隨機數

我們引入頭文件time.h,取時間戳作為seed的取值來源,改代碼片段如下,將srand(1)改成srand(time(NULL))

運行代碼,得到10個隨機數如下,定義非常量的srand參數,可以避免偽隨機數的產生

『叄』 c語言rand()函數

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

rand(產生隨機數)
表頭文件: #include<stdlib.h>

定義函數 :int rand(void)

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

返回值:
返回0至RAND_MAX之間的隨機整數值,RAND_MAX的范圍最少是在32767之間(int),即雙位元組(16位數)。若用unsigned int 雙位元組是65535,四位元組是4294967295的整數范圍。
0~RAND_MAX每個數字被選中的機率是相同的。

範例:
/* 產生介於1 到10 間的隨機數值,此範例未設隨機數種子,完整的隨機數產生請參考
srand()*/
#include<stdlib.h>
main()
{
int i,j;
for(i=0;i<10;i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf("%d ",j);
}
}
執行:

9 4 8 8 10 2 4 8 3 6
9 4 8 8 10 2 4 8 3 6 //再次執行仍然產生相同的隨機數

srand(設置隨機數種子)
表頭文件:#include<stdlib.h>

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

函數說明:
srand()用來設置rand()產生隨機數時的隨機數種子。參數seed必須是個整數,通常可以利用geypid()或time(0)的返回值來當做seed。如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。

範例
/* 產生介於1 到10 間的隨機數值,此範例與執行結果可與rand()參照*/
#include<time.h>
#include<stdlib.h>
main()
{
int i,j;
srand((int)time(0));
for(i=0;i<10;i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf(" %d ",j);
}
}
執行:與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 之間的隨機數這種方法是不或取的,比較好的做法是: j=(int)(n*rand()/(RAND_MAX+1.0))產生一個0到n之間的隨機數
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; i<10; i++)
printf("%d\n", rand() % 100);
return 0;
}
除以上所說的之外,補充一點就是srand這個函數一定要放在循環外面或者是循環調用的外面,否則的話得到的是相同的數字。

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);
}
}
總結:
我們知道rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,我們可以稱它為種了,為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數,但這不是真正的隨機數,當計算機正常開機後,這個種子的值是定了的,除非你破壞了系統,為了改變這個種子的值,C提供了 srand()函數,它的原形是void srand( int a) 功能是
初始化隨機產生器既rand()函數的初始值,即使把種子的值改成a; 從這你可以看到通過sand()函數,我們是可以產生可以預見的隨機序列,
那我們如何才能產生不可預見的隨機序列呢?我們可能常常需要這樣的隨機序列,是吧。利用srand((unsign)(time(NULL))是一種方法,因為每一次運行程序的時間是不同的,對了,你知道time() 函數的功能是返回從1970/01/01到現在的秒數的吧,可能這個起始時間不正確,你查一下對不對吧,C還提供了另一個更方便的函數, randomize()
原形是void randomize(),功能是用來始初rand() 的種子的初始值,而且該值是不確定的,它相當於srand((unsign)(time(NULL)) 不過應注意的是randomize()的功能要通過time來實現所以在調用它時頭文件要包含time.h罷了

『肆』 c語言rand函數的使用

你好!!

srand((int)time(NULL));// 移到循環的外面

增加了每次出拳的顯示,便於查看

增加了局數的顯示

#include<stdlib.h>//為了使用srand、rand函數必須使用該頭文件
#include<time.h>//要使用time()必須使用該頭文件
#include<stdio.h>
intmain()
{
charin;
//出錯,產生的隨機數永遠一樣。
srand((int)time(NULL));//移到循環的外面
inta=1;

do{
intuser;//定義玩家和電腦出拳
intuwin,ulos,allwin;//定義玩家的勝利參數,失敗參數,平局參數
intcwin,clos,loop;//定義電腦的勝利參數和失敗參數,不需要定義平局參數,可以直接取用allwin
intcomputer=0;
uwin=0;
ulos=0;
allwin=0;
cwin=0;
clos=0;
computer=rand()%3+1;//隨機產生1-3任意一個整數,rand()%3是隨機產生0-2之間的整數(包含0但不包含3)

printf(" 【第%d局】 請出拳:",a);
a++;
scanf("%d",&user);
printf("這一局,您出的是【%d】,電腦出的是【%d】! ",user,computer);
switch(user)
{
case1:
if(computer==1)
{
printf("這一局,您出的是【石頭】,電腦出的是【石頭】,好巧哦,是平局耶! ");
allwin+=1;
}
}
}while(1);
}

『伍』 c語言隨機函數rand()怎麼使用

它的返回值就是求取隨機的值,所以如果沒有對數有要求,直接這樣定:
printf("%d", rand());就能輸出一個隨機數.但如果對數有要求,如小數或在一定值以內:
小數:rand()+rand()/100.0 //100.0後面的.0必須寫,100是說明求兩位小數,你可以自己加大.
一定范圍:rand()%10+0 //10是頂和底的差,0是底,就是說求10到20之間的數就是:rand()%10+10
但是調用它必須先調用srand()來生成隨機種子,如果你沒調用它,系統會自動調用.但是srand是有個參數的,種子就是根據這個參數來定的,所以這個參數決定著生成的隨機數.如果你在代碼里寫死了它:srand(10);那這樣rand生成的隨機數就也被定格在了一定量,所以不要這樣用.要這樣寫:
srand(time(NULL));time的返回值是當前系統時間.因為時間不同,所取的數值也就不同.這樣隨機數就真正的隨機了.
time在<time.h>中聲明
rand,srand在<stdilb.h>中聲明.

『陸』 C當中的取隨機數函數rand()的具體用法是什麼

c語言之rand函數的使用

在編程時我們有時總希望自己產生一個隨機數字,以供使用,那麼下面介紹rand函數的使用。

方法/步驟
  1. 寫入頭文件

    #include <stdlib.h> #include <stdio.h> #include <time.h>

  2. 變數的定義

    void main( void ) { int i,k;

  3. srand( (unsigned)time( NULL ) ); /*選取種子文件*/

  4. for( i = 0; i <20;i++ ) /*循環控制20個隨機數的生成*/{ k=rand()%100; /*儲存隨機數*/ printf( " k=%d ", k ); /*輸出隨機數*/ } }

    END
注意事項
  • 此為隨機函數的一種產生方法

  • 如果只需一個,那麼可以省略循環控制

『柒』 隨機函數rand怎麼用c語言

一、首先包含必要的頭文件

#include<stdio.h>

這個包含用於輸入輸出的函數。

#include<stdlib.h>

這個包含初始化隨機數種子、產生隨機數的函數。

#include<time.h>

這個包含與時間有關的函數,初始化隨機數種子時可以用到。

二、使用如下公式產生在區間[min,max]之間的隨機數

int r=rand()%(max-min+1)+min;

三、一個例子,產生10個[1,100]的隨機整數

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main()

{

const int min=1,max=100;

int i,r;

//用當前時間初始化隨機數種子

srand(time(NULL));

printf("隨機產生的10個1-100的整數是:");

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

{

r=rand()%(max-min+1)+min;

printf("%d,",r);

}

return 0;

}

四、運行結果的截圖

截圖2

『捌』 C語言rand()函數的用法

你少了1。
這個公式是a+(b-a+1)*rand()/(RAND-MAX+1.0)
這里可以簡化,公式是a+rand%(b-a+1)

所以你寫得有點雜正確的是,-100+rand%201或-100+201*rand()/(RAND-MAX+1.0)

『玖』 c語言隨機函數rand使用方法

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
srand((unsigned int)time(0));//初始化種子為隨機值
int i = 0;
for(;i < 5;++i){
int num = rand() % 50 + 1;//產生一個1-50之間的數
printf("%d ",num);
}
printf("\n");
return 0;
}