【发布时间】:2013-02-18 22:13:31
【问题描述】:
我只想问,整数是确定性的吗?我知道它们应该是,但它们在所有平台上都相同吗?
我在 Google 上进行了搜索,但它返回的唯一内容是如何将两个数字放在一起,以及对确定性主题的深入研究。
我之所以问这个问题是因为我正计划开发一个具有锁步网络模型的小型演示。屏幕上会有几个块可以通过命令移动,并且正在考虑为所有块赋予整数值。
这也让我想到了通常的 RTS 游戏,它们总是不得不与浮点数不同步(这不是它们不同步的唯一原因,但仍然是不同步的主要因素)。为什么这些游戏不只使用 64 位整数来存储所有单位位置等。我认为 64 位具有存储大量不同值的能力足以处理单位位置等。
【问题讨论】:
-
计算机中的几乎所有内容在某种程度上都是确定性的。唯一的例外是与时间相关的问题(以及读取
/dev/random的结果,如果您的系统有)。 -
“我只是想问一下,整数是确定性的吗?” - 我认为这里的术语有问题。在整数方面,没有什么比浮点精度的限制更重要,没有。
-
确定性?以什么方式?好奇的 ?您想要对象的唯一 ID(不可重复)?
-
@EdS 我认为他的意思是定义明确并且具有跨运行/平台的可重现行为
-
是的,就是这样,我想将用户命令从一个进程发送到所有其他对等连接的进程,并让它们执行完全相同的命令。所以基本上会有一个移动命令,当一个键被按下时会发送。在本地机器上,这会移动块(将其位置存储在一个整数中),所有其他对等点都遵循完全相同的步骤。
标签: c++ c cpu cpu-architecture