c語言rand怎麼隨機產生浮點型數

時間 2021-09-10 18:22:30

1樓:問明

#include

#include

#include

#define max_random 1000//這個是產生隨機數的最大值,但是取浮點數,所以要除去的

#define num 2500

double random(double a,double b)//這個是產生隨機數函式,由於庫函式功能有限,所以要自己封裝一下

return(rand()%(int)((b-a)*max_random))/(double)max_random+a;

void main()

double dran[num+(num-1)*4];

double ran[(num-1)*4];

double a,b;

int k=0;

srand((unsigned)time(null));//這個是設定隨機數的種子數,由於種子數相同產生的隨機數相同,所以取時間做種子

cout<<"***********************************親體**************************"

cout<<<"";

cout<<"***********************************後代**************************"

for(i=0;ia=dran;

b=dran[i+5];

for(int j=1;j<=4;j++)

dran[i+j]=random(a,b);

ran[k]=dran[i+j];

cout

(rand()%(int)((b-a)*max_random))/(double)max_random+a這個產生浮點數.

擴充套件資料:

include用法:

#include命令預處理命令的一種,預處理命令可以將別的源**內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程式**;可以定義類似識別符號功能的巨集,在編譯時,預處理器會用別的文字取代該巨集。

插入標頭檔案的內容

#include命令告訴預處理器將指定標頭檔案的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入標頭檔案:

1、#include《檔名》

2、#include"檔名"

如果需要包含標準庫標頭檔案或者實現版本所提供的標頭檔案,應該使用第一種格式。如下例所示:

#include//一些數學函式的原型,以及相關的型別和巨集

如果需要包含針對程式所開發的原始檔,則應該使用第二種格式。

採用#include命令所插入的檔案,通常副檔名是.h,檔案包括函式原型、巨集定義和型別定義。只要使用#include命令,這些定義就可被任何原始檔使用。

2樓:幻翼高達

需要準備的材料分別有:電腦、c語言編譯器。

1、首先,開啟c語言編譯器,新建乙個初始.cpp檔案,例如:test.cpp。

2、在test.cpp檔案中,輸入c語言**:printf("%d", rand());。

3、編譯器執行test.cpp檔案,此時成功通過rand函式產生了隨機數。

3樓:在雙龍洞努力生活的康乃馨

用rand()/(double)(rand_max); //產生0~1的浮點數

例:#include

#include

void main()

若要0~10的浮點數,則修改為rand() /(double)(rand_max/10); //多了/10

若要0~100浮點數,則修改為rand() /(double)(rand_max/100)

......以此類推

執行你會發現結果總是一樣,因為這嚴格上只是偽隨機數(做平時練習的話,用這個應該可以了)

若是要求更嚴格準確的隨機數的話,用上srand

例:#include

#include

#include

void main()

這樣每次產生的隨機數是不同的

4樓:匿名使用者

可以先rand出整數字數和小數字數,再根據整數字數比如3位,就是(rand()%10)*100+(rand()%10)*10+(rand()%10)*1,這就是整數部分了,小數部分同理

當然整數部分可以不這麼處理,直接rand就可以了,主要是小數部分可以這麼處理

還有一種思路是先rand出乙個整數,根據需求除以10的n次方,就變成小數了

5樓:匿名使用者

float frand()

資料結構(c語言)中怎樣產生浮點型的隨機數?希望大神指教

6樓:風若遠去何人留

這個取決於你要求的浮點型隨機數範圍。

比如 你要產生0~100之間的 浮點型隨機數,一位小數。

那麼可以

rand()%1000 *0.1

前面部分 產生0~999的整數隨機數

*0.1後,變為浮點型,也就是0.0~99.9

c語言怎樣產生一定範圍的隨機數?

7樓:hk_孤獨的心

編譯環境為:vs2013

產生1到3的整型隨機數的**如下:

#include

#include

#include

#define max 3   //這個函式的意義為:隨機生成最大的數為3

#define min 1    //這個函式的意義為:隨機生成最小的數為1

int main()

8樓:愛夏的你呀

在c語言中,rand()函式可以用來產生隨機數,但是這不是真真意義上的隨機數,

是乙個偽隨機數,是根據乙個數,可以稱它為種子。

為基準以某個遞推公式推算出來的一係數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數。

c語言產生一定範圍的隨機數的源**如下:

#include

#include

int main()

return 0;

}擴充套件資料

1、如果要隨機生成乙個在一定範圍的數,你可以在巨集定義中定義乙個random(int number)函式,然後在main()裡面直接呼叫random()函式。

2、在對rand()的前三次呼叫中,並且此後得到的返回值仍然是在對rand()的第一批呼叫中所得到的其餘的返回值。因此,只有再次給srand()提供乙個隨機的「種子」值,才能再次得到乙個隨機數。

9樓:匿名使用者

c語言的獲取隨

機數的函式為rand(), 可以獲得乙個非負整數的隨機數。要呼叫rand需要引用標頭檔案stdlib.h。

要讓隨機數限定在乙個範圍,可以採用模除加加法的方式。

要產生隨機數r, 其範圍為 m<=r<=n,可以使用如下公式:

rand()%(n-m+1)+m

其原理為,對於任意數,

0<=rand()%(n-m+1)<=n-m於是0+m<=rand()%(n-m+1)+m<=n-m+m即m<=rand()%(n-m+1)+m<=n

10樓:哇哎西西

利用srand((unsigned int)(time(null))是一種方法,因為每一次執行程式的時間是不同的。

在c語言裡所提供的隨機數發生器的用法:現在的c編譯器都提供了乙個基於ansi標準的偽隨機數發生器函式,用來生成隨機數。它們就是rand()和srand()函式。

這二個函式的工作過程如下:

1) 首先給srand()提供乙個種子,它是乙個unsigned int型別,其取值範圍從0~65535;

2) 然後呼叫rand(),它會根據提供給srand()的種子值返回乙個隨機數(在0到32767之間)

3) 根據需要多次呼叫rand(),從而不間斷地得到新的隨機數;

4) 無論什麼時候,都可以給srand()提供乙個新的種子,從而進一步「隨機化」rand()的輸出結果。

下面是0~32767之間的隨機數程式:

#include

#include

#include // 使用當前時鐘做種子

void main(void)

根據上面的程式可以很容易得到0~1之間的隨機數:

#include

#include

#include

int main( )

而產生1~100之間的隨機數可以這樣寫:

#include

#include

#include

int main( )

11樓:溫柔_儂渲芷

srand((int)time(null));設定隨機數種子

rand()%100;產生0-99的隨機數。高階點的,假如要產生16-59之間的數,你可以這樣寫:rand()%44+16(這裡44由59-16+1得到)。其他情況如法炮製!

下面是搜回來的:

問題1: 怎樣獲得乙個真正的隨機數?要知道,rand()是不能產生真正的隨機數的!即使不能產生真正的隨機數,也要大概接近呀!而rand()好象每次的隨機都一樣。

專家解答:

之所以rand()每次的隨機數都一樣是因為rand()函式使用不正確。各種程式語言返回的隨機數(確切地說是偽隨機數)實際上都是根據遞推公式計算的一組數值,當序列足夠長,這組數值近似滿足均勻分布。如果計算偽隨機序列的初始數值(稱為種子)相同,則計算出來的偽隨機序列就是完全相同的。

這個特性被有的軟體利用於加密和解密。加密時,可以用某個種子數生成乙個偽隨機序列並對資料進行處理;解密時,再利用種子數生成乙個偽隨機序列並對加密資料進行還原。這樣,對於不知道種子數的人要想解密就需要多費些事了。

當然,這種完全相同的序列對於你來說是非常糟糕的。要解決這個問題,需要在每次產生隨機序列前,先指定不同的種子,這樣計算出來的隨機序列就不會完全相同了。你可以在呼叫rand()函式之前呼叫srand( (unsigned)time( null ) ),這樣以time函式值(即當前時間)作為種子數,因為兩次呼叫rand函式的時間通常是不同的,這樣就可以保證隨機性了。

你也可以使用srand函式來人為指定種子數。windows 9x/nt的遊戲freecell就允許使用者指定種子數,這樣使用者如果一次遊戲沒有成功,下次還可以以同樣的發牌結果再玩一次。

問題2: 我按照上述方法並不能產生隨機數,僅產生公差為3或4的等差數列:

請採納答案,支援我一下。

c語言使用隨機函式rand產生1099的互不相

你好!你的 就沒有輸出部分呀 輸出部分新增了,你看看吧 include stdlib.h include stdio.h include time.h void main int n a 50 i,j,t srand time null for i 0 i 50 i a i rand 90 10 f...

c問題rand預設產生的隨機數範圍

rand 函式可以用來產生隨機數 rand 會返回一隨機數值,範圍在0至rand max 間。返回0至rand max之間的隨機數值,rand max定義在stdlib.h,其值至少為32767 運算的結果是乙個不定的數,要看你定義的變數型別,int整形的話就是32767。在呼叫此函式產生隨機數前,...

c語言編寫程式利用rand函式產生100以內的隨

小夏在深圳 源 如下 srand include main int i,j for i 0 i 100 i j 1 int 10.0 rand rand max 1.0 printf d j 擴充套件資料 1 rand 的內部實現是用線性同餘法做的,它不是真的隨機數,因其週期特別長,故在一定的範圍裡...