請問C 的rand隨機數發生器產生的隨機數到底是什麼分佈呢

2025-03-04 22:25:13 字數 3314 閱讀 7378

1樓:驚風丨狂舞灬

是隨機分佈的。不過其實它是按固定演算法算出來的。。。也就是說每次產生前逗頌姿我們需要給它乙個啟始數(就是種子【srand就是定義種子的】),然後它就會會用這種子進行運算,產生隨機數,而且下一次運算的啟始櫻隱就是上一次的運算的結果,這樣就產生了一大串數。

因為這函式的結果產生的數是均勻的。所以只要啟始數也就是種子是個隨機數就可以了。(例如時間)。

因為時間是在不斷變化的所以每次啟始數都不一樣,也就得到山絕了不一樣的隨機數。但是如果種子是一樣的話,就會得到上次一樣的結果。所以歸根結底是一種演算法算出來的偽隨機數,機器本身是沒有不確定性,也就是無法產生真正意義上的隨機數的。

2樓:網友

rand產生乙個0到rand_max之間的整數。但實際上是乙個偽隨機數,重複滾伏呼叫rand產生一系列看上去是隨機的數值,但在每次執行程式的時候,這組樹本身是課重複的。一旦程式進行測的除錯後,就可以調整為在每一次執行時產生不同的隨機序列。

這個過程稱為隨機化。使用srand完成。srand取乙個unsigned型別的整數參森滲數並內嵌rand函式(即種子就可以在每次執行程式的時候產生不同的隨機數系列)

就你所說,t 會是0-10之間的乙個隨機數。

據我的觀察,在每一次種入不同的數值時,產生的隨機序列不同,但種入相同的隨機序列時是相同的。這是,可以通過大春攜計算機時鐘自動取得種子值 srand(time(0));

3樓:網友

均勻分早亮布 。 但是具體實現方法是各陸歷寬不相同的爛閉, 所以效果也會不完全一樣, 尤其最後幾位的隨機性可能會很差。

4樓:網友

你看下演算法書,橋姿裡面有均勻慎消蘆分佈隨機函式的演算法。通常srand會用設定乙個新的種子計算隨機數,但寬頻是測試表明分佈不均勻。效果不是很好。

用rand隨機函式怎麼求指定範圍的隨機數

5樓:信必鑫服務平臺

在excel中使用函式rand()*最大值-最小值)+最小值即可得到5-18範圍內的隨機數了,如下世掘御圖操作所示:

1、在任一excel單元格數輸入「=rand()*18-5)+5」;

2、輸入完成後按回車,即可得到5-18間的隨機數。

3、選擇生成的隨機數,進行填充後就可以很多散慶5-18之間的隨機數,如下圖所示:

用rand隨機函式怎麼求指定範圍的隨機數?

6樓:信必鑫服務平臺

在excel中可畝租以使用randbetween函式。

randbetween

返回位於指定的兩個數之間的乙個隨機整數。每次計算工作表時都叢耐做將返回乙個新的隨機整數。

語法。randbetween(bottom,top)

bottom 函式 randbetween 將返回的最小整數。

top 函式 randbetween 將返回的最大整數。

示例 返回一組介於1到100間的隨機數。

引數seed是滲衡srand()的種子,用來初始化srand()的起始值。

但是,要注意的是所謂的「偽隨機數」指的並不是假的隨機數。其實絕對的隨機數只是一種理想狀態的隨機數,計算機只能生成相對的隨機數即偽隨機數。計算機生 成的偽隨機數既是隨機的又是有規律的 ——一部份遵守一定的規律,一部份則不遵守任何規律。

比如「世上沒有兩片形狀完全相同的樹葉」,這體現到了事物的特性 ——差異性;但是每種樹的葉子都有近似的形狀,這正是事物的共性 ——規律性。從這個角度講,我們就可以接受這樣的事實了:計算機只能產生偽隨機數而不是絕對的隨機數。

系統在呼叫rand()之前都會自動呼叫srand(),如果使用者在rand()之前曾呼叫過srand()給引數seed指定了乙個值,那麼 rand()就會將seed的值作為產生偽隨機數的初始值;而如果使用者在rand()前沒有呼叫過srand(),那麼系統預設將1作為偽隨機數的初始 值。如果給了乙個定值,那麼每次rand()產生的隨機數序列都是一樣的~~

所以為了避免上述情況的發生我們通常用srand((unsigned)time(0))或者srand((unsigned)time(null))來 產生種子。如果仍然覺得時間間隔太小,可以在(unsigned)time(0)或者(unsigned)time(null)後面乘上某個合適的整數。

利用rand的函式產生10個隨機數,從小到大排序 matlab程式 急求大神!!

7樓:用著追她

1、首先開啟電腦上的「matlab」軟體。

2、rand函式產生由在(0, 1)之間均勻分佈的隨機陣列成的陣列,下面在命令列輸入rand(1)。

3、rand(a,b)產生a行b列的隨機矩陣,在命令列輸入rand(1,4)產生乙個1行4列的隨機矩陣。

4、下面輸入rand(2,3),產生乙個2行3列的隨機矩陣。

5、當行數和列數相等時,輸入rand(2,2),產生乙個2行2列的隨機矩陣。

6、行和列相等時,可以只輸入乙個數字,例如rand(2),生成的結果與rand(2,2)相同。

注意事項:

matlab可以進行矩陣運算、繪製函式和資料、實現演算法、建立使用者介面、連線其他程式語言的程式等,主要應用於工程計算、控制設計、訊號處理與通訊、影象處理、訊號檢測、金融建模設計與分析等領域。

c語言如何srand和rand函式產生10個1-100內的隨機數

8樓:幻翼高達

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

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

2、在檔案中,輸入c語言**:

for (int i = 0; i < 10; i++)printf("%d ", rand() 100 +1);

3、編譯器執行檔案,此時成功通過rand產生了10個1-100內的整數。

9樓:網友

先用抄srand函式設定乙個。

種子,一般為襲當前時間,然後使用bairand函式產生隨機du數zhi

如產生a~b的隨機數使用表示式rand()%b-a+1)+a。

注意dao:srand函式在標頭檔案#include 中。

示例**:#include

#include

#include

int main()

列印生成的隨機數。

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

return 0;}

10樓:網友

這就是關於程式設計的一些內容,現在呢科技發達了沒有,今後這個如果不會變成的話,可能連工作都找不到。

c怎樣生成隨機數C怎樣生成隨機數

random類預設的無參構造來 函式可自以根據當前系統時鐘為種子,進行一系列演算法得出要求範圍內的偽隨機數。random rd new random rd.next 1,10 生成1 10之間的隨機數,不包括10 guid 類 guid globally unique identifier 全球唯一...

c產生隨機數 不重複,C 產生隨機數 不重複

private const int num 3 數目 private const int maxvalue 5 最大數 private const int minvalue 1 最小數 public int sort int num return num public int getnum int ...

挑戰演算法可以用rand產生隨機數嗎

我看了下網上,是這樣的 rand 隨機產生一個數 0 65535 加上 後,就是對其它數求餘,求餘產生的數取內決於求餘的數。比如,rand 20 意思是利用rand 的返回值 一個0 65535之間的數 對20求餘,求餘的結果就是0 19。也就是0 20 1 之間。如果我們要產生10 20之間的隨容...