我正在尝试解决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个参数,但这不是作者想要的。我想了解他想要什么,并想知道是否有人解决了这些练习。不幸的是,在作者的网站上没有这些练习的解决方案。
感谢您的建议。
答案 0 :(得分:2)
标准C ++中没有任何内容称为MAXINT
。
有一个宏INT_MAX
,在<climits>
中定义(C中为<limits.h>
);它扩展为常量表达式,其值为类型int
的最大值。例如,如果int
为32位,则INT_MAX
可能为2147483647
。
本书其他地方描述MAXINT
(检查索引和/或练习前的几页),或者是错误,Stroustrup意味着引用INT_MAX
。
如果您无法找到定义此MAXINT
的位置,则可以替换INT_MAX
。