2012-07-24 94 views
-2

我有一個C++ BigInteger庫。我必須從任意大的隨機數中創建一個精確的125位bigInteger。我需要對創建的125位數執行右移,左移,setbit,getbit,NOT,OR,XOR和AND操作。我需要使用哪個庫來完成上述操作?誰能幫幫我嗎。BigInteger Library

+4

GMP是其中一個比較有名的。 – chris 2012-07-24 05:14:48

+2

你有*圖書館嗎?或者你需要*圖書館嗎? – steffen 2012-07-24 05:53:15

+0

我已經使用https://mattmccutchen.net/bigint/。 但我不能從任何隨機數創建精確的125位大數字。如果任何其他圖書館可以創建數字,那麼我需要它,或者如果可能的話,從這個庫中創建大125位數,然後請告訴我。 – user1545975 2012-07-24 06:40:22

回答

0

谷歌搜索條件big integer library給了我C++ Big Integer Library。來自網站:

這個庫強調易於使用和實現清晰度超過 速度;一些用戶會更喜歡GMP,速度更快。

編輯:

要創建具有125位的隨機數,有很多的選擇。

一個簡單而快速的解決方案(但我顯然不能在上面發佈的庫中 - 我不確定是否可以使用GMP)將以正確的表示法執行rand() * 0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

上述庫的範圍中的一個方法,不幸的是相當慢,將繪製125個單個位(隨機爲「0」或「1」),如果您繪製了「1」 」。這裏有一些(未經測試的)代碼:

BigInteger summand, number125bit; 
summand = 1; 

srand(systemtime_or_any_other_number); 
for (int i=0; i<125; i++) 
{ 
    if (rand() && 1) 
    { 
     number125bit += summand; 
    } 
    summand = summand << 1; 
} 
+0

我使用了上面提到的相同的庫(https://mattmccutchen.net/bigint/),但是使用這個我無法創建精確的125位數字。 – user1545975 2012-07-24 06:42:35

+0

我編輯了我的答案,希望能夠涵蓋您的問題。 – 2012-07-24 07:00:44

+0

隨機數是以毫秒爲單位的系統時間。我需要那個隨機數的125位bigInt。請幫助我,如果有任何方式來做到這一點。 – user1545975 2012-07-24 08:46:11