首页 > 解决方案 > 如何在 Prolog 中表达无穷大?

问题描述

我正在尝试使用 random/3

random(+L:int, +U:int, -R:int)

有什么东西可以用来表示无穷大吗?

例如:

random(0, Infinity, Random_Number).

是否有可能通过随机实现这一目标?或者有没有其他简单的选择?

PS我在使用 sup ( Supremum ) 的地方制作了 clpfd 程序,但我没有使用 clpfd。

标签: randomprologinfinity

解决方案


评论中的讨论多么有趣。我对无限数和数学的不发达直觉告诉我:

在物理计算机上可以使用一致的表示法来表示有限数量的整数。所以会有无数其他整数无法表示。因此,如果您随机选择任何数字,您可以在您的机器上表示它的概率为 0。您不妨定义:

random_between(0, infinite, infinite).

超限数字 可能是开始阅读的一个地方,但我该说谁。你需要一个数学家来解决这类问题,而不是一个编程的行人。

也许您应该在https://math.stackexchange.com/上提问?


对于您的问题:您可以用符号表示无穷大的概念,例如 atom infinite。然后你需要决定如何在你的代数中处理这个概念,并为它提供规则。以上random_between/3只是一个例子。如需灵感,请查看浮点数如何处理无穷大。


推荐阅读