在計算機程式中是否真的存在隨機,計算機程式可以產生真正的隨機數嗎?不是random偽隨機

2021-03-19 18:20:29 字數 5070 閱讀 1390

1樓:三千雷焱

所有的隨機都是偽隨機。

2樓:匿名使用者

所謂的隨機就是在一大堆的檔案中隨機拿一個進行使用

計算機程式可以產生真正的隨機數嗎?不是random偽隨機

3樓:匿名使用者

光靠程式是無法實現真隨機數的。要實現真正的隨機數,必須有真正隨機的種子。

我很好奇,計算機真的能產生隨機數嗎 30

4樓:hqd殘夢

計算機理論上可以產生統計意義上的真隨機數 。首先,「真隨機」也有不同的含義, 真正的真隨機目測只有量子力學了……一般的所謂真隨機不是指這個,而是指 統計意義 上的隨機,也就是具備不確定性,可以被安全的用於金融等領域,下面的真隨機也均指這個。

大部分程式和語言中的隨機數(比如 c 中的,matlab 中的),確實都只是 偽隨機 。是由可確定的函式(比如線性同餘),通過一個種子(比如時鐘),產生的偽隨機數。這意味著:

如果知道了種子,或者已經產生的隨機數,都可能獲得接下來隨機數序列的資訊(可**性)。

直觀來想,計算機是一種可確定,可**的的裝置,想通過一行一行的確定的**自身產生真隨機,顯然不可能。但是, 我們或許可以迂迴一下 ,一個典型的例子就是 unix 核心中的隨機數發生器(/dev/random),它在 理論上能產生真隨機 。即這個隨機數的生成,獨立於生成函式,或者說這個產生器是非確定的。

實現方法:簡單的講就是軟硬結合,或者說,引入系統外的變數(把軟體,**,演算法想象成一個封閉的系統)。具體來講,unix 維護了一個 熵池 ,不斷收集非確定性的裝置事件,即機器執行環境中產生的 硬體噪音 來作為種子。

比如說:io請求的響應時間, 特定硬體中斷的時間間隔, 鍵盤敲擊速度,滑鼠移動速度,甚至周圍的電磁波等等……直觀的說, 你每按一次鍵盤,動一下滑鼠,鄰居家 wifi 訊號強度變化,磁碟寫入速度,等等訊號,都可能被用來生成隨機數 。

程式和演算法本身不能產生真隨機,但是計算機系統作為整體可以迂迴產生統計意義上的真隨機 。

電腦是否能產生真隨機數?

5樓:永恆刺客

計算機理論上可以產生統計意義上的真隨機數 。首先,「真隨機」也有不同的含義, 真正的真隨機目測只有量子力學了……一般的所謂真隨機不是指這個,而是指 統計意義 上的隨機,也就是具備不確定性,可以被安全的用於金融等領域,下面的真隨機也均指這個。

大部分程式和語言中的隨機數(比如 c 中的,matlab 中的),確實都只是 偽隨機 。是由可確定的函式(比如線性同餘),通過一個種子(比如時鐘),產生的偽隨機數。這意味著:

如果知道了種子,或者已經產生的隨機數,都可能獲得接下來隨機數序列的資訊(可**性)。

直觀來想,計算機是一種可確定,可**的的裝置,想通過一行一行的確定的**自身產生真隨機,顯然不可能。但是, 我們或許可以迂迴一下 ,一個典型的例子就是 unix 核心中的隨機數發生器(/dev/random),它在 理論上能產生真隨機 。即這個隨機數的生成,獨立於生成函式,或者說這個產生器是非確定的。

實現方法:簡單的講就是軟硬結合,或者說,引入系統外的變數(把軟體,**,演算法想象成一個封閉的系統)。具體來講,unix 維護了一個 熵池 ,不斷收集非確定性的裝置事件,即機器執行環境中產生的 硬體噪音 來作為種子。

比如說:io請求的響應時間, 特定硬體中斷的時間間隔, 鍵盤敲擊速度,滑鼠移動速度,甚至周圍的電磁波等等……直觀的說, 你每按一次鍵盤,動一下滑鼠,鄰居家 wifi 訊號強度變化,磁碟寫入速度,等等訊號,都可能被用來生成隨機數 。

程式和演算法本身不能產生真隨機,但是計算機系統作為整體可以迂迴產生統計意義上的真隨機 。

6樓:元戎劍

目前由計算機產生的所有所謂的隨機數都是偽隨機數.

採用隨機變化的種子再產生偽隨機數,得到的結果更隨機些,但它還是偽隨機數. 因為如果重複這個過程(給同樣值的種子),得到的結果是重複的(同樣的).

如果不採用隨機變化的種子,單用rand(),它只會產生固定的序列.例如: for(i=0;i<10;i++)printf("%d ",rand()); 每次執行輸出的還是那十個數.

談隨機數的分佈,涉及統計的概念,統計的前提是要有大量的樣品.做到大量樣品的分佈滿足某種分佈(包括均勻分佈或某種譜分佈),演算法上是不困難的.

我們在實驗室裡模擬天然海浪,讓海浪符合設定的頻譜和方向譜,還要滿足波高和週期的時域統計分佈,還有波群統計相似,單靠計算機提供的偽隨機數是不夠的,須要加上自己的演算法,才能同時滿足頻域和時域的要求.

"我只要知道偽隨機數用的是哪種演算法,就能準確的知道下一個數將是什麼",是對的,例如用時間做種子,你只要給入同樣的時間,就能得到同樣的結果.

7樓:陽光上的橋

隨機數是不可能的,都是偽隨機數。

但是隨機數與你說的摩擦、碰撞有關係嗎?

8樓:

計算機可以生成真隨機數,這是由於其在進行硬體驅動時,不可避免的受到不確定因素的影響而產生隨機性,例如計算機至少需要顯示驅動和發聲驅動吧,體現在計算機程式語言上就是涉及顯示卡驅動和音效卡驅動的程式設計函式有的執行時間是隨機的,即使你連續呼叫這些函式執行時間也是變化的,利用這些就可以生成真隨機數了。其它方法也不少就不多說了。

計算機為什麼不能產生真正的隨機

9樓:布蘭登_詹寧斯

在計算機、通訊系統中我們採用的隨機數、隨機碼均為偽隨機數、偽隨機碼。所謂「隨機碼」,就是無論這個碼有多長都不會出現迴圈的現象,而「偽隨機碼」在碼長達到一定程度時會從其第一位開始迴圈,由於出現的迴圈長度相當大,例如cdma採用42的偽隨機碼,重複的可能性為4.4萬億分之一,所以可以當成隨機碼使用。

什麼是偽隨機和真隨機?

10樓:加斯加的小蘭花

所謂真偽隨機其實分別指的是機率和概率。

所謂概率,用dota裡話說,就是出現得並不規律,但是大致上就是這麼多次數。比如17%,如果是每2000次為一週期,那麼17%意味著,儘管你不確定這340次究竟會什麼時候出現,但2000次中必然出現340次,不多一次也不會少一次。貌似這就是偽隨機了。

概率事件之間相互影響,一旦這一次沒有觸發,那麼下一次觸發的概率就會變大。形象而言,概率事件就好比,一個班有50位同學抓鬮**,紙條總計50個,其中10個有有獎,40個沒獎。可以確定,按理說每個人平均都有20%的中獎可能。

一旦第一位同學沒有抽到,那麼剩下同學平均中獎的可能性就會從20%提高到20.40%,以此類推,如果前10位同學都沒有中獎,那麼剩下同學中獎概率將提高到平均25%。但是不管誰中誰沒中,最後橫豎只有20%的人中獎。

這就是20%的中獎概率。

而真隨機則是指機率。比如17%的機率,意味著你這次觸發特殊事件是17%的可能性,下次也是,每一次都是。如果你這次失敗,下次依然保持在17%的可能性。。

同樣使用上面**的例子,這次把20%概率換成20%的機率,那麼就成了這樣了:50個同學,每人會得到一個裝著50張紙條的盒子,其中有10張有獎,40張不中獎,每人可以抽10張紙條。那麼這時候,大家**就是個抽各的,互不影響。

你抽中了不會導致別人中或者不中,這就是機率,意味著事件之間毫無聯絡,說不定50個人總計可以抽到1000張全部獎品,或者50人全部空手而回。雖然同樣是20%的可能性,概率是所有事件相互影響,總體可能性保持在20%,而機率是所有事件相互獨立,單次可能性保持在20%,但總體中獎分佈則在0到100%之間浮動。

11樓:

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

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

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

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

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

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

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

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

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

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

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

12樓:f0o炎

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

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

13樓:我愛糖甜

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

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

14樓:匿名使用者

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

)1211222122111211111222212212212221112212212221()1211222122111211111222212212212221112212212221()1211222122111211111222212212212221112212212221()1211222122111211111222212212212221112212212221

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

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

15樓:我愛唐尼

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

在計算機中excel是什麼意思,計算機中DRAM什麼意思?

excel在計算機中就是 讀音查下字典就知道了 它是一種辦公軟體,其實是一個 形式,用於資訊處理分析的常用辦公軟體,其它還有word文件,幻燈片,它的讀法 i kseil 可以查字典 是一種辦公軟體 微軟office裡的,和word一樣。和英語讀音一樣。計算機的一種辦公軟體的名字,一般有word文件...

在計算機中位元組的單位是什麼,計算機中的資料單位和儲存單位是什麼

計算機資訊資料單位和儲存單位有 b 位元組 kb 千位元組 mb 兆位元組 以及 gb 十億位元組 等,位元組也是儲存器儲存資訊的最小單位,通常用 b 來表示。每級為前一級的1024倍,比如1kb 1024b,1m 1024kb。換算關係如下 計算機儲存單位的進率是1024而不是1000的原因 目前...

學日語,在計算機行業是否好找工作

您好!我的專業是科技日語,但我在您這個時候就開始自學計算機,說真的不怕你笑話,我就一個畢業證和學位證,我的英語4級證和日語一級證都沒有,但並不表示我學的不好。本人認為日語和計算機組合起來是個 搭檔 我現在在深圳工作蠻不錯的。真的,我不騙人,但是你一定要把你的英語學好。想學日語的話就要花更多的時間!反...