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

Pseudo random numbers generator from Stroustrup's PPP using C++, chapter 8, exercises 8 and 9

本文关键字:练习 C++ 使用 PPP Stroustrup 随机数生成器 来自      更新时间:2023-10-16

我试图解决B.Stoustrup的书《编程——使用C++的原理和实践》第八章中的练习8和9。

练习8涉及编写一个名为randint()的函数,该函数生成一个范围为[0;MAXINT]的随机整数。MAXINT应该是什么?它是存储在int中的可能的较大数字吗?它是函数的自变量吗?作者没有说明。给出的唯一提示是:"编程艺术,Knuth,第2卷"。这本书描述了一种称为线性同余法的算法,它涉及4个参数(见维基百科的链接文章)。

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

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

谢谢你的建议。

在标准C++中没有称为MAXINT的东西。

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

要么MAXINT在书中的其他地方有描述(查看索引和/或练习前的几页),要么这是一个错误,Stroustrup指的是INT_MAX

如果你找不到这个MAXINT是在哪里定义的,你可能只需要替换INT_MAX