Cocoa touch 在两台机器上同步随机数生成器

Cocoa touch 在两台机器上同步随机数生成器,cocoa-touch,Cocoa Touch,有可能在两台不同的机器上“同步”(没有更好的词)随机数生成器吗 背景:我有一款iOS多人网络扑克游戏。两个对等方都需要能够访问卡组。当牌组被洗牌时,我可以用NSCoding序列化我的牌组对象并将其发送给另一个对等方,这样牌组就同步了,但是如果我可以只依靠两个对等方上的随机数生成器生成相同的随机数,我可以发送更少的数据 因为这是一个纸牌游戏,我需要可用的最佳随机数,所以我更喜欢使用arc4random(),它在第一次调用时会自动播种。是否有一种方法可以手动为其播种 简单地发送卡片组对象是一个不错的

有可能在两台不同的机器上“同步”(没有更好的词)随机数生成器吗

背景:我有一款iOS多人网络扑克游戏。两个对等方都需要能够访问卡组。当牌组被洗牌时,我可以用NSCoding序列化我的牌组对象并将其发送给另一个对等方,这样牌组就同步了,但是如果我可以只依靠两个对等方上的随机数生成器生成相同的随机数,我可以发送更少的数据

因为这是一个纸牌游戏,我需要可用的最佳随机数,所以我更喜欢使用arc4random(),它在第一次调用时会自动播种。是否有一种方法可以手动为其播种

简单地发送卡片组对象是一个不错的解决方案,但我计划使用OpenFeint实现异步多人游戏,要做到这一点,我的游戏状态需要保持在16K以下,而序列化时我的卡片组几乎是2K。:)


谢谢

如果你只是发送随机数本身呢?无论是哪个设备的“回合”,它都可以创建并发送随机数,以便所有版本都可以确认相同的抽签。如果您小心地确保所有版本的卡组都处于相同的顺序/卡中,并且没有随机数丢失,那么理论上,它应该可以在非常少量的数据传输中工作。如果另一个玩家部分通过,您可以通过翻转对象或对象数组中的单个位来标记已绘制的卡,并发送该对象/数组

如果做不到这一点,我恐怕不知道平台,但我知道在其他一些语言中,将种子作为调用的一部分将使用固定值(即:arc4random(seed))对其进行种子设定。我不知道您正在研究的是否是这种情况,但可能值得研究


希望这有帮助

这听起来是个坏主意。可以拦截随机生成器状态。序列化(52卡)数据组不应占用超过52字节的空间。