Stroustrup的PPP中使用C ++的伪随机数生成器,第8章,练习8和9

时间:2012-08-03 20:59:38

标签: c++

我正在尝试解决B. Stoustrup的书“编程 - 使用C ++的原理和实践”第8章中的练习8和9。

练习8涉及编写一个名为randint()的函数,该函数生成[0;MAXINT]范围内的随机整数。什么是MAXINT应该是什么?是否可以存储在int中的更大数量?这是函数的一个参数吗?作者没有陈述。给出的唯一提示是:“编程艺术,Knuth,第2卷”。该书描述了一种名为linear congruential method的算法,该算法涉及4个参数(参见链接的维基百科文章)。

练习9涉及使用练习8中的randint(int a, int b)函数生成[a;b]范围内的随机整数。

现在我可以编写一个实现线性同余方法的函数,有4个参数,但这不是作者想要的。我想了解他想要什么,并想知道是否有人解决了这些练习。不幸的是,在作者的网站上没有这些练习的解决方案。

感谢您的建议。

1 个答案:

答案 0 :(得分:2)

标准C ++中没有任何内容称为MAXINT

有一个宏INT_MAX,在<climits>中定义(C中为<limits.h>);它扩展为常量表达式,其值为类型int的最大值。例如,如果int为32位,则INT_MAX可能为2147483647

本书其他地方描述MAXINT(检查索引和/或练习前的几页),或者是错误,Stroustrup意味着引用INT_MAX

如果您无法找到定义此MAXINT的位置,则可以替换INT_MAX