【发布时间】:2016-05-18 16:03:12
【问题描述】:
我正在使用一种算法,并希望使用一些非常大的随机数对其进行一些统计。我希望生成的数字来自区间 [2^255, 2^256],但它相当于在 [0,2^255] 中生成一个数字。
我正在使用 C++,但我对编程非常陌生,只知道基础知识。这甚至是合理的事情吗(就内存和计算能力而言)?我看过其他关于 2^32 和 2^64 的帖子,但还没有发现这么大的东西。我将对这些数字进行的唯一计算是比较、除法和减法。
如果是这样,我将如何编写代码来完成这样的任务?
【问题讨论】:
-
“这样的任务”——任务的哪一部分?目前这是一个非常广泛的问题......
-
您需要实际的整数值,还是近似值可以?如果近似值可用,则应使用双精度数来处理它,否则您需要一个任意精度的数字库。 stackoverflow.com/questions/310276/…
-
你会使用什么样的数据类型来处理这么大的数字?
-
random number functions in the Standard Library 有很多种。你评估过这些吗?如果您为您的问题使用正确的数字,例如生成 64 位的纯随机数据且分布均匀,您可以将多个较小的随机数连接在一起以构建一个更大的随机数。
-
“这是否合理”——是的,密码学库需要如此大的随机数作为课程的标准。但是,他们使用特殊的数学库来处理这个范围。