什麼是偽隨機和真隨機,rand產生的是偽隨機數,什麼叫偽隨機數 還有rand和srand有什麼區別啊

2021-03-22 08:14:01 字數 2689 閱讀 2419

1樓:

現在的計算機還無法產生一個真正的隨機數,它能產生的隨機數都是偽隨機數,在這方面它跟人腦還沒法比,但是它有強大的計算功能,可以通過複雜的計算彌補這一缺點。

存在一個基本的隨機率m,被的隨機率都以m和固有概率共同計算,如網路遊戲中攻擊力的浮動,裝備的精煉。m=f(t)是時間t的函式,t至少精確到0.01秒。

t還是一個週期較大的周期函式.

因為計算機是結構,條理非常清晰的數理邏輯.

它所執行的東西都是按照人們編好的程式一步一步來的.

所以這並不是真正的隨機.

舉個例子來說,你玩過網遊吧,一般的遊戲裡都有本地圖內隨機傳送的技能或物品.

如果真隨機的話,你無限次傳送可以到達任何一個地方.

但如果偽隨機的話,無限次傳送之後有些地方仍然是無法到達的。

計算機通過複雜得計算,讓大家看起來好像是資料之類的東西是處於隨機狀態的,但是他還是有一定的規律。

真正的隨機,沒辦法**下一步。

2樓:f0o炎

偽隨機就是基於一定的理論和規律來完成的,有設定和規律其本身就和隨機性衝突了,只是你並不知道這個規律罷了,所以才覺得和真隨機沒區別,而真隨機是任何人都無法**,屬於強行五五開,把每個人拉到同一水平的概率.

偽隨機就是設定規則的人知道結果的順序,而真隨機就是在沒有事先準備時,他也無法知道參與自己規則的人群裡到底誰先誰後.

3樓:我愛糖甜

程式實現隨機只是運算獲得,最重要的運算引數通常是時間 ,這個引數也有人叫種子或其他叫法,總之要有一個不停變化且不重複的引數程式在通過計算得出隨機結果 當這個引數完全相同時隨機數一樣,這種隨機有弊端比如隨機數長度和程式所能認知的最短時間間隔,最重要是依賴引數計算這是本質區別,好處是可控比如遊戲暴擊計算a砍b 100次 其中第幾刀暴擊 對於多臺裝置來說真隨機是沒有意義的因為會產生不同結果導致遊戲資料同步錯誤,這時候給偽隨機相同的隨機種子就可以保障a看到第幾刀暴擊b看到的也一樣。

真隨機大腦可以產生是意識的產物,如果要解釋可能要等量子力學突破。

4樓:匿名使用者

就是說偽隨機:一個極長極長的數列:(1和2為例:

)1211222122111211111222212212212221112212212221()1211222122111211111222212212212221112212212221()1211222122111211111222212212212221112212212221()1211222122111211111222212212212221112212212221

懶得打了,就是說到了一定長度之後出現迴圈(本例用括號標明迴圈處)

隨機就是說完全隨機,沒有迴圈(有的話算幸運)

5樓:我愛唐尼

一個很簡單的區別方法,偽隨機的基數是有限的,而真隨機的基數是無限的

rand產生的是偽隨機數,什麼叫偽隨機數?還有rand和srand有什麼區別啊?

6樓:溦信

stdlib.h標頭檔案中有巨集#define rand_max 0x7fff

rand()產生一個0到0x7ffff即0到32767之間的隨機數

rand()/(rand_max+1.0)就等於一個0到1之間的小數了,因為rand()最大是32767最小是0,再除以32768就是一個0到1之間的小數(不能等於1),再乘以10就是一個0到10之間的數了(不等於10).最後再加1,就成了一個求1到10之間隨機數的式子了.

srand函式是隨機數發生器的初始化函式,原型:

void srand(unsigned seed);

它需要提供一個種子,如:

srand(1);

直接使用1來初始化種子。

不過常常使用系統時間來初始化,即使用

time函式來獲得系統時間,它的返回值為從 00:00:00 gmt, january 1, 1970

到現在所持續的秒數,然後將time_t型資料轉化為(unsigned)型在傳給srand函式,即:

srand((unsigned) time(&t));

還有一個經常用法,不需要定義time_t型t變數,即:

srand((unsigned) time(null));

直接傳入一個空指標,因為你的程式中往往並不需要經過引數獲得的t資料。

srand((int)getpid());

使用程式的id(getpid())來作為初始化種子,在同一個程式中這個種子是固定的

隨機輸出十個0-100之間的整數

#include

#include

#include

void main( void ) }

rand產生的是偽隨機數,什麼叫偽隨機數?還有rand和srand有什麼區別啊?

7樓:匿名使用者

rand()%最大+最小

這樣輸入範bai圍產生隨機數,但du是電腦zhi裡的隨機數順dao序已經排列好了,執行程式後你內會發現每次出現容的隨機數都一樣,所以要設定一個隨機數種子,來插入電腦已經排列好的隨機順序,這樣就能解決每次出現一樣資料的問題。 把下面這段程式加到rand()前面就ok了。。。

unsigned seed;

printf("please input seed:");

scanf("%u",&seed);

srand(seed);

時間序列和隨機過程有什麼區別

一 性質不同 1 時間序列 是將同一統計指標的數值按其發生的時間先後順序排列而成的數列。2 隨機過程 是依賴於引數的一族隨機變數的全體,引數通常是時間。二 作用不同 1 時間序列 可以反映社會經濟現象的發展變化過程,描述現象的發展狀態和結果 可以研究社會經濟現象的發展趨勢和發展速度 可以探索現象發展...

隨機數種子是做什麼的

隨機bai函式產生的是一種偽du隨機數,它實際是一種序列發zhi生器,有固定的算dao法,只有當種子不專 同時屬,序列才不同,所以不應該把種子固定在程式中,應該用隨機產生的數做種子,如程式執行時的時間等。以c 為例,應先用srand 設定不同種子,否則每次呼叫rand 得到的值是一樣的。什麼是隨機數...

球迷與偽球迷最大的區別是什麼,偽球迷和真球迷最根本的區別是?

偽球迷就是一談到足球很激動 真球迷就是遇到重點才激動 一個是將足球當成是生命中重要的一部分 另一個只是把足球當成一個為自己撐面子的遊戲,剛看一會就想睡覺,但礙著自己的面子,硬撐著,同時也想著明天怎麼去和他們吹吹自己熬夜看球,這就是典型的偽球迷心理。真正的球迷會掉眼淚,而偽球迷只懂得歡呼.永遠支援自己...