2012-07-24 88 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