草庐IT

java - 有没有办法从数字序列中生成种子?

例如,如果java生成伪随机序列:93256通过使用23作为种子,我怎样才能做相反的事情?即从序列93256中获取23。或者如何为特定序列分配种子?如果有数据库就很容易做到——只需为序列分配一个随机键INSERTINTOSEQUENCE_TABLEVALUES(RANDOM_KEY,SEQUENCE)但是,如果不允许我使用数据库,是否有公式可以做这样的事情? 最佳答案 是的,对设计不当的伪随机数生成器的数字流进行逆向工程绝对容易,例如Java编程语言(java.util.Random)中的线性同余PRNG实现。事实上,只要来自特定生

java - 在 Math.random() 上设置种子

我需要在调用Math.random()的Java代码上编写一些junit测试。我知道如果我正在实例化我自己的Random对象以产生可重复的结果,我可以设置种子。Math.random()是否也可以这样做? 最佳答案 Math.random()方法使用私有(private)静态字段:privatestaticRandomrandomNumberGenerator;如果您真的需要将其设置为newRandom(CONSTANT_SEED)(例如您需要JUNit测试您无法控制的代码),您可以通过使用反射来做到这一点。

math - 为什么在 util Random 类中使用 48 位种子?

为什么这个类在其线性同余公式中使用48位种子?我本来期望32或64...我知道当要求32位值时它需要更高阶位。但为什么只有16个附加位?这是一个“随机”选择吗? 最佳答案 您需要比输出位更多的状态位,因为LCG的性质是状态的低位位根本不是很随机。所以如果你想要32位输出,你需要超过32位的状态。为什么使用48而不是64?因为48就足够了,而且您是几十年前设计的,所以有充分的理由希望避免使用比绝对必要更多的资源。 关于math-为什么在utilRandom类中使用48位种子?,我们在Sta

url - 谷歌机器人 : Too many distinct URLs pointing to identical content

我们网站的一个部分呈现分页随机内容。新用户第一次访问该站点时,她会被分配一个新的随机种子,该种子传入URL,并且为了持久性也存储在cookie中。问题是URL中的种子混淆了Googlebot(和其他索引服务);它提示有太多URL指向相同的内容。我们可以不在URL中传递种子,但即使我们只使用cookie,在我看来,在某些时候我们必须决定访问者是索引蜘蛛还是人以非随机方式呈现内容。我的主要问题是:在这种情况下检测最常见的索引蜘蛛并以非随机方式为它们提供内容有多糟糕?我知道搜索优化的首要规则是不优化,如果有的话,为用户优化,并确保内容对每个人都是一样的。但在这种情况下,我们实际上不会更改内容

c++ - 在哪里初始化随机种子以通过多个随机模块使用?

所以,每次我开发一些大的东西,将多个模块组合在一起构建最终功能时,我一直在想同一个问题:如果超过1个模块需要使用随机函数,在哪里初始化随机种子?如果我有一个需要随机的类(例如,类通过使用self实现的快速排序对输入数组进行排序来初始化自身,所以我需要一个随机数来选择主元),我通常有一个私有(private)的staticboolisRandOn;变量,所以在我开始选择随机基准之前,我会检查该变量并执行srand(time(NULL));如果随机尚未打开。如果我在一个命名空间中有大量的实用函数,我会做一件非常相似的事情:我将这样一个变量放在我的utils库中的一个匿名命名空间中,并或多或

c++ - 我可以从 Mersenne Twister 获得当前种子吗?

我正在我的应用程序中调整MersenneTwister,特别是来自http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html的mt19937ar.c-代码反射(reflect)在https://gist.github.com/mstum/8367363上这在游戏中用作确定性RNG,并且为了使保存游戏按预期工作,我需要从MT中获取当前种子(而不是初始种子),以便我可以继续。例如,假设我用12345的种子初始化它并调用genrand_int315次。这会产生序列1996335345、1911592690、67

c++ - 为什么 rand() 在以 1 和 UINT_MAX 为种子时产生相同的值?

这是一些代码:#includeintmain(){srand(1);std::cout这会产生以下输出:1680716807为什么这两个种子会产生相同的结果?它们在连续的rand()调用中产生的整个值序列也是相同的。可能值的范围太大,这不可能是纯巧合。是吗:rand()的执行意外(如果是这样,我很好奇那可能是什么)通过设计(如果是,为什么?)(可能相关:种子10、100、1000、10000和100000分别产生168070、1680700、16807000、168070000和1680700000。) 最佳答案 一个非常简单可用的

c++ - 64 位随机生成器种子

我目前正在运行一个具有8个以上管道(线程)的多线程模拟应用程序。这些管道运行非常复杂的代码,该代码取决于种子生成的随机序列。然后将序列归结为单个0/1。我希望这个“随机处理”在将种子从主线程传递到处理管道后是100%确定性的。因此,我可以在第二次运行中复制结果。所以,例如:(我有这个编码并且它有效)Pipe1->Seed:123->Result:0Pipe2->Seed:123->Result:0Pipe3->Seed:589->Result:1当我需要运行100M或更多这些进程然后对结果进行平均时,问题就出现了。可能100M中只有1个是1,其余都是0。很明显,我无法使用32位种子对1

c++ - 随机数生成器种子和状态之间有什么区别?

我看到一个C++程序接受种子和状态来设置std::default_random_engine,它是std::linear_congruential_engine的类型定义(在我的系统上至少)。seed()方法用于设置状态的初始种子和operator>>。我知道播种随机数生成器(RNG)的原理,但可以将其与其状态互换使用。 最佳答案 种子是用于初始化生成器的值,状态是每次调用生成随机数后生成器的当前状态。对于非常简单的随机数生成器,例如线性同余生成器,种子和状态是相同的东西(或者至少,存储在同一个变量中),但它们当然不一定是。

c++ - 计算种子文件的信息哈希

我正在使用C++解析torrent文件的信息散列,与此站点相比,我无法获得“正确”的散列值:http://i-tools.org/torrent我构建了一个非常简单的玩具示例,只是为了确保我掌握了正确的基础知识。我在sublime中打开了一个.torrent文件并删除了除信息字典之外的所有内容,所以我有一个如下所示的文件:d6:lengthi729067520e4:name31:ubuntu-12.04.1-desktop-i386.iso12:piecelengthi524288e6:pieces27820:¡´E¶ˆØËš3í..............(moreunreadabl