Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 同步随机数_Ios_Random - Fatal编程技术网

Ios 同步随机数

Ios 同步随机数,ios,random,Ios,Random,我有2台设备,我正在寻找一种方法来同步它们之间的随机数生成 更多背景:两台设备连接后,一台设备向另一台设备发送包含数据集的文件。然后将数据集加载到两个设备上。数据以不同级别的随机化方式显示。我希望显示在设备之间同步,但仍然是随机的 一个概念性的例子:拍摄一堆图片。堆栈的副本被发送到远程设备并存储起来以备将来使用。然后在两个设备上以相同的方式对堆栈进行洗牌,以便在每个设备上绘制第一张图片将产生相同的输出。这过于简化了,在我的应用程序中需要更多的随机数,因此诸如共享排序顺序之类的优化不适用 分解:我

我有2台设备,我正在寻找一种方法来同步它们之间的随机数生成

更多背景:两台设备连接后,一台设备向另一台设备发送包含数据集的文件。然后将数据集加载到两个设备上。数据以不同级别的随机化方式显示。我希望显示在设备之间同步,但仍然是随机的

一个概念性的例子:拍摄一堆图片。堆栈的副本被发送到远程设备并存储起来以备将来使用。然后在两个设备上以相同的方式对堆栈进行洗牌,以便在每个设备上绘制第一张图片将产生相同的输出。这过于简化了,在我的应用程序中需要更多的随机数,因此诸如共享排序顺序之类的优化不适用

分解:我需要一个简单的方法从2台设备上的相同随机数池中提取。我不知道在设备同步之前可能会发生多少次随机抽取,但一旦同步,可以预测它们将抽取相同数量的随机数,因为它们使用相同的数据集,然而,在进行下一批之前,有可能需要重新同步随机数据,其中一个会比另一个提取更多

我希望避免在显示时传输数据集中已传输的每个实体的排序顺序、位置信息等,这也会引起结构问题,因为项目最初的设计目的不是通过生成相同的位置来共享该信息,这要求随机数以相同的顺序出现


任何想法或建议都将不胜感激。

您可以使用LCG算法并为生成设置相同的种子。因为LCG算法是确定性的,只要你用相同的种子给两个设备播种,它们就会产生完全相同的伪随机数

您可以在此处找到有关LCG算法的更多信息:


例如,java.util.Random使用此LCG。

您可以使用LCG算法并为生成设置相同的种子。因为LCG算法是确定性的,只要你用相同的种子给两个设备播种,它们就会产生完全相同的伪随机数

您可以在此处找到有关LCG算法的更多信息:


例如,java.util.Random使用此LCG。

如果在每个设备上为rand提供相同的种子,即srand seed;,每次出来的伪随机数都保证是相同的,并且您可以无限期地取出数字而无需重新播种。

如果您在每个设备上为rand提供相同的种子,即srand seed;,每次出来的伪随机数都保证是相同的,并且您可以无限期地取出数字而不重新播种。

大多数随机数生成器允许您设置种子。如果在两台不同的机器上创建两个随机数生成器,实现完全相同的生成算法,甚至不需要具有相同的类型或运行相同的操作系统,然后为两台机器提供相同的种子值,则它们都将生成完全相同的随机数序列

因此,您的同步应该只需要将一个数字(通常是随机选择的数字)从第一台机器传输到第二台机器。然后两台机器都使用与种子相同的编号


我会查找iPhone随机数生成器的详细信息,但苹果文档网站显然受到明尼苏达州政府关闭的影响。

大多数随机数生成器都让你设定种子。如果在两台不同的机器上创建两个随机数生成器,实现完全相同的生成算法,甚至不需要具有相同的类型或运行相同的操作系统,然后为两台机器提供相同的种子值,则它们都将生成完全相同的随机数序列

因此,您的同步应该只需要将一个数字(通常是随机选择的数字)从第一台机器传输到第二台机器。然后两台机器都使用与种子相同的编号


我会查找iPhone随机数生成器的详细信息,但苹果文档网站显然受到明尼苏达州政府关闭的影响。

如果您不总是想指定种子,您可以简单地指定一台设备作为主设备。当主设备生成一个随机数时,它会向另一个设备发送一条包含该随机数的消息。

如果您不总是想指定种子,您可以简单地将一个设备指定为主设备。当主机生成一个随机数时,它会向另一个设备发送一条包含该随机数的消息。

我认为这需要在客户端维护一个随机数列表,并从中提取,这意味着主机必须始终在客户端之前生成。按照我目前的安排
这里没有指定的主机,这会使事情更加复杂。我认为这需要在客户端维护一个随机数列表,并从中提取,这意味着主机必须始终在客户端之前生成。在我目前的安排中,没有指定的大师,这将使事情更加复杂。谢谢大家的回复。我最初在两台设备上使用同一种子的尝试被我没有追踪到但现在意识到的东西所抛弃,因此简单地设置种子应该可以工作,一旦我确定是什么在抛弃它,我可能会在我还没有找到的某个地方重置它。。。。然而,一旦我开始跨平台移植该系统,我认为OscarMk关于实施我自己的LCG的建议将是最大限度地减少操作系统到操作系统不一致等问题的方法。感谢大家的回复!我正在尝试完全相同的方法,一些测试人员报告说,有时随机生成的元素会不同步。这是非常可怕的,因为我只是在使用兰德后播种,所以不知道那里发生了什么。可能是不同的iDevices或iDevices与模拟器有不同的rand实现吗?感谢大家的回复。我最初在两台设备上使用同一种子的尝试被我没有追踪到但现在意识到的东西所抛弃,因此简单地设置种子应该可以工作,一旦我确定是什么在抛弃它,我可能会在我还没有找到的某个地方重置它。。。。然而,一旦我开始跨平台移植该系统,我认为OscarMk关于实施我自己的LCG的建议将是最大限度地减少操作系统到操作系统不一致等问题的方法。感谢大家的回复!我正在尝试完全相同的方法,一些测试人员报告说,有时随机生成的元素会不同步。这是非常可怕的,因为我只是在使用兰德后播种,所以不知道那里发生了什么。可能是不同的iDevices或iDevices与模拟器有不同的rand实现吗?这是我所想的,但没有看到结果,但进一步的测试表明我在其他地方出现了一个小故障,这是我所想的,但没有看到结果,但进一步的测试显示我在其他地方有一个小故障,这会导致我的失败。