Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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
如何在C中预测Rand()函数?_C_Algorithm_Random - Fatal编程技术网

如何在C中预测Rand()函数?

如何在C中预测Rand()函数?,c,algorithm,random,C,Algorithm,Random,我正在尝试制作一个预言器,它可以预测序列中的下一个随机数。我有一个随机生成的数字数组。如果你有实际的随机数字,就没有办法预测它们 软件可以编程使用实际的随机数,这些随机数是通过监测背景辐射、原子衰变和来自不同组件的电噪声等随机事件获得的。这通常仅用于创建加密密钥等关键应用程序,因为该操作将阻塞,直到收集到足够的“随机位” 大多数软件使用一种算法,根据种子和过去的事件(如对PRNG的调用、经过的时间等)创建随机数。如果您知道所使用的算法及其用于输入的所有事件,或者能够将种子重置为已知值,则可以10

我正在尝试制作一个预言器,它可以预测序列中的下一个随机数。我有一个随机生成的数字数组。

如果你有实际的随机数字,就没有办法预测它们

软件可以编程使用实际的随机数,这些随机数是通过监测背景辐射、原子衰变和来自不同组件的电噪声等随机事件获得的。这通常仅用于创建加密密钥等关键应用程序,因为该操作将阻塞,直到收集到足够的“随机位”

大多数软件使用一种算法,根据种子和过去的事件(如对PRNG的调用、经过的时间等)创建随机数。如果您知道所使用的算法及其用于输入的所有事件,或者能够将种子重置为已知值,则可以100准确地预测这些数字。

the
rand()
函数是一个伪随机数生成器(PRNG)。它不是熵的来源。如果知道种子,则可以完全预测序列,因为它是确定性的,通常基于(LCG)。这样的生成器有一个有限的周期长度,之后它们会重复


如果您知道给定的序列是从一开始就开始的,那么强制种子查找匹配的初始序列就很简单了。否则,您可以使用一些统计方法来缩小潜在种子的范围。

请解释,如果您成功,这并不意味着实现中存在缺陷。或者您是否在考虑为srand()使用一个常量种子,记录几个rand()然后从头开始?这不是一个“知道”的神谕。我一点也不清楚你在问什么。你在寻找算法吗?劝告关于如何实现
rand()
的知识?事实并非如此,你应该多读一点关于数学中熵的知识,随机性在数学上和数学上都是一个非常复杂的问题philosophically@DrPrItay哪一部分不是真的?通过监测原子衰变事件可以得到真正的随机数,或者通过将种子重置为已知值可以得到可预测的随机数?那么哲学部分来了,谁说监测原子衰变是随机的,或者是在随机物质中行为?即使代表粒子波函数的路径积分在某些情况下也被视为非随机的,纯粹是统计的,这都是你所看到的分辨率问题,以及你如何从数学上定义一个随机事件,有些人会说没有任何东西是随机的,这都是一个数学解决的问题@DrPrItay你的反对意见是基于古老的哲学问题,这些问题无法得到明确的回答。OP问了一个基于数学的编程问题。我同意我来自某种加密背景,我遇到了一个家伙,他成功地预测了python的随机性,我也遇到了一篇博客文章,对crand()做了同样的事情,因此说你无法预测这些数字是完全错误的,我在找我们说的那个博客,这比说你不能预测随机数要准确得多,但是我不认为它回答了这个人的问题,我遇到过一些博客,在展示c随机数是多么容易预测之前,因为它的低熵,在我们说的时候寻找它,我相信有人对此做了充分的分析。如果你找到了帖子,请用链接发布答案!这是针对python的,但概念是相同的