2010-06-23 145 views
6

給定有限值的僞隨機二進制序列(例如:00101010010101),預測序列將如何繼續。有人能告訴我最簡單的方法嗎?或者,如果某人在其計算機上幾乎不能玩單人紙牌遊戲時很難,有人可以告訴我在哪裏開始第一步... PS:可以使用此技術來預測下一個電子輪盤賭數字的顏色(例如:分別將10分配給紅色和黑色)?僞隨機二進制序列預測

回答

1

首先回答PS:不,因爲輪盤賭旋轉是獨立的事件,所以在歷史結果序列中沒有任何預測性。

一般問題很難和有趣。 這個網站可以從他們的初始值推斷序列的數量驚人:

http://www.research.att.com/~njas/sequences/

注意,它是任意整數序列。

我嘗試了{0,0,1,1,0,0,1,1,...}這樣的簡單模式,它說的是正確的。

1

那麼,對於僞隨機序列,唯一的可能性是保持計數每種可能性之前有多少。如果1s大於0,則下一個更可能爲0.更可能取決於每個的相對出現次數。

請注意,這不會對真正的隨機性,因爲事件是獨立的,儘管什麼統計學家告訴你:-)

工作,你會發現,出(痛苦)你第一次得到的運行當您使用輪盤賭的雙重丟失方法時,桌上有13個紅色。在任何情況下,房屋的優勢都是從0(在某些桌子上是雙倍的0)中獲得的,既不是紅色也不是黑色。

+0

我的直覺不會讓我放棄蒙特卡羅的方式。事實上,黑色和紅色甚至在很長一段時間內看起來像是在某個階段,你需要一連串紅色來對付黑色。顯然,在智力上,我知道這是一個謬論,但它是一個非常狡猾的。 – 2010-06-23 01:23:09

+0

如果你認爲事件是獨立的,你是對的。但是,如果不是,那麼你提出的統計方法將會完全失敗。例如,統計方法將建議0作爲{1,0,0,1,0,0,1,0,0,1,0,0,...}中的下一個數字。把它提供給整數序列的在線百科全書(參見我的答案),它會正確地推斷出下一個數是1.(當然,如果你知道事件真的是獨立的,那麼看起來的模式是巧合,你應該說0!) – dreeves 2010-06-23 01:29:25

+0

這是一個很難放過的@格拉辛。但我腦海中的「漫長時間」意味着數萬億和數萬億的事件,而不是你在一天晚上可以在賭場做的事情:-)另一件需要注意的事情是,事件雖然彼此獨立,但並不一定不受影響。我已經看到可以將球放置在特定象限的賭徒們(儘管這是傳言,我知道有些人可以把它降到八分之一)。這是你想要在你身邊而不是房屋的那個人(至少在他在統計分析中發現他的房子總是這麼做)。 – paxdiablo 2010-06-23 01:51:18

1

這是一個體面的問題,但我認爲如果「你幾乎不能玩單人紙牌」,它現在可能已經不在你的範圍之內了。

你應該研究一下基本語言,大多數人都會說PHP,但我很謹慎地向初學者推薦(雖然這很容易理解,請參閱:XAMPP)。 Java可能是一種「易於使用,易於使用」的語言,但我相信在這裏有更好的線索可以開始使用哪種語言(因爲有經驗的程序員喜歡它,所以Python可能會獲勝)。

順便說一句,你的英語很好(我沒有注意到你是一個非母語英語的人)。

現在,至於你的問題,如果你正在尋找真正的模式匹配。我傾向於這種想法轉換成代碼:

"CURRENTPOINT" is end of first letter. 
LOOP: Pick letter(s) from Start to "CURRENTPOINT" 
Break the rest of your binary string into blocks of the same size. 
See if these blocks all equal your picked letters. 
If not, move "CURRENTPOINT" along and repeat the LOOP until you run out of letters. 
If so, you have your "repeating section." 

如果你只是猜測,隨機發生器暫時偏見,而這種偏見會重新建立一個基線(平衡0和1)在合理的短期,那麼你可以比較每個0和1秒的計數,並說另一個更可能是基於你的基線的偏差。但是,請注意Monte Carlo fallacy

+0

「大多數人會說PHP」?真? :P – 2010-06-23 04:39:34

+0

是的,每當我看到「應該學什麼」的時候,PHP都會被建議,這很困難,因爲確定它們很容易部署,許多程序員缺少網絡基礎知識,但同時PHP會懲罰你正確編碼,你作爲一個新手可怕的錯誤。 – 2010-06-23 06:50:04

3

密碼安全的僞隨機數生成器專門用於使你想做的事情不可能。特別是,它們滿足「下一位測試」:給定k位的輸出,你不能猜測位k+1的概率大於1/2

由於選擇了PRNG,不能滿足下一位測試的普通僞隨機數發生器可能受到攻擊,事實上在現實世界的系統中發現了安全漏洞。特別是,已知線性同餘生成器有點(或完全)可預測,並且某些版本的Unix隨機可能使用此算法。這種方法雖然數學密集。如果你想沿着這條路走下去,搜索「線性同餘發生器預測」是一個開始的地方。

如果您知道PRNG實現的另一個攻擊是嘗試確定用於生成您正在分析的序列的種子。種子有時基於可猜測的信息,如時間,進程ID等。

0

我注意到沒有人告訴過你週期性。

僞隨機序列總是在數學運算上工作。 (直到量子計算機^^)

通常的方式來產生一個是分裂兩個素數(不知道這是正確的詞,但不管)。

例如

1/3=1.333333..... 
9/7=1,2857142857142857142857142857143 

這些都是相當小的號碼,我們什麼通知?週期性。

1/3=1.3 3 3 3 3 3..... 
9/7=1,2857 142857 142857 142857 142857 143 

越是大的素數越在這種情況下:3的序列和142857會,如果你看一個僞隨機序列很長一段時間,你會發現一個是大

所以週期性並且能夠「猜測」下一個數字。但是這可能需要一段時間。

PS:對不起,我的英語,我有點生鏽的^^

+0

歡迎來到Stack Overflow!請給出完整的答案:在這種情況下,您應該提供一些代碼或至少一個算法來證明您的概念。也歡迎鏈接到外部來源。 – 2012-12-02 13:53:09

+0

此外,請注意,英文字母不使用「àccéntédléttérs」;) – 2012-12-02 13:54:46

0

你需要考慮什麼是隨機性的特性,研究這些。例如,「隨機性運行在一束」。將隨機序列與可預測的序列進行比較:通常情況下,您不會在可預測的序列中找到叢集。爲了利用束等待一堆。如果運氣好一點,你就會贏。