问题标签 [prng]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 此功能是否具有抗原像性?
测试 PRNG 函数强度的方法之一是设计将 PRNG 输出与随机字符串区分开来的测试:给定一个框,它为某些 u 或随机字符串输出 PRNG(u)。我们必须确定输出是否来自 PRNG。假设散列函数 H 未通过此测试。
这是否意味着它不具有第二原像抗性?
android - 线程安全的 RNG Android NDK
Bionic 中有线程安全的 RNG 吗?对于 Linux,我知道有rand_r(),但不幸的是,这不是 NDK 的一部分。
java - 自定义线程本地随机数生成器
到目前为止,我一直只是用老式的方式创建自己的线程(在 1.5 java 并发之前)。但我想看看 Executors 和其他东西。我基本上知道如何使用它们,但就我而言,我需要每个线程都有自己的随机数生成器。我知道 Java 1.7 具有 ThreadLocalRandom 这正是我想要实现的,但使用我自己的 PRNG(无论是 QMC 还是其他任何东西)。
再说一遍:
我想创建一个由 8 个线程组成的执行器池,并给它一堆任务,这些任务使用我自己的随机生成器,每个线程都是本地的(每个线程都有自己的实例,用不同的种子创建)。最好的方法是什么?最好是最干净、性能最好的。ThreadLocal 也许?我从来没有用过它,但谁知道......
谢谢,迈克尔。
php - PHP的rand函数真的那么差吗?
我知道鼓励使用mt_rand()over,rand()因为它使用 Mersenne Twister 而不是 PRNGrand()使用的任何东西,但这里似乎从未考虑过:用户活动。
事实上,用户的行为可以被认为是非常随机的。例如,在任何给定时刻,用户可能有 4% 的机会触发rand()一个功能调用,一个用户触发三个rand()调用的概率为 8% shuffle(),一个用户触发两个调用的概率为 20% rand(),并且每个用户加载页面时,PRNG 会前进 1。
毕竟,NPC 运动难道不是让神奇宝贝游戏中的 RNG 滥用如此令人沮丧的原因吗?
那么,请记住,虽然rand()确实有其模式,但用户活动的随机性和用途的多样性rand()足以使rand()' 的缺点无关紧要吗?在绝对意义上,mt_rand()是“更随机”。但这与人类元素的熵相比如何?
random - 为什么编写一个真正的随机数生成器这么难?
我不明白为什么 PRNG 比真正的 RNG 更容易编程。一个典型的处理器不应该做一个简短的工作来产生一个真正的随机数吗?
hash - 加密哈希算法可以用作 PRNG 吗?
MD5/SHA256/SHA512等可以作为PRNG吗?例如,给定一个整数种子,是伪代码:
......一个体面的PRNG?(i是一个递增的整数,例如,输出是:
在这个问题的上下文中,“体面”仅指输出的分布:当以这种方式使用时,密码散列函数的输出是否均匀?(虽然我认为这取决于散列函数,但所有加密散列也应该有统一的输出,对吧?)
注意:我承认这将是一个缓慢的 PRNG,与 Mersenne-Twister 相比,由于使用了加密哈希。我对速度不感兴趣,我对结果是否安全也不感兴趣——只是分布是正确的。
在我的特定用例中,我正在寻找类似于XKCD 的 geohashing 的东西,因为它很容易由分布式各方实现,他们都会得到相同的答案。Mersenne-Twister 可以被替代,但它在许多目标语言中不太可用。(有些语言完全没有它,有些语言无法访问它的原始 U32 输出,等等。SHA512 要么是内置的,要么很容易获得。)
c++ - 在一系列值之间生成随机双精度
我目前无法在 -32.768 和 32.768 之间生成随机数。它一直给我相同的值,但小数字段的变化很小。例如:27.xxx。
这是我的代码,任何帮助将不胜感激。
javascript - FIPS 批准的 VB 脚本和 Java 脚本中的随机数生成器
我的项目是关于从客户端向服务器端发送一个随机数。由于我的随机数应该得到 FIPS 196 的批准,我想知道是否有一种方法可以在 VBscript 和 Javascript 中生成这个随机数。谢谢
r - 使用“L'Ecuyer-CMRG”RNG 时,R 不会重置种子?
我在 R 中进行了一些并行模拟,我注意到使用“L'Ecuyer-CMRG”rng 时种子没有改变。我正在阅读“Parallel R”一书,每次调用 mclapply() 时,选项 mc.set.seed = TRUE 应该给每个工人一个新的种子。
这是我的代码:
编辑:同样的事情发生在我的台式机和笔记本电脑上(都是 Ubuntu 12.04 LTS)。
c++ - 我应该使用多少个随机数生成器?
如果应用程序的不同类别需要提取一个或多个随机数,应该在哪里初始化随机数生成器以产生良好的随机序列?
特别是,我需要构建一些决策树来训练随机森林。每个决策树的构建涉及以下步骤:
- 加载数据集(按多行数据组织)。
- 此数据集中的一些行是随机选择的,以构建新数据集。这个新的数据集将在树的生长过程中逐渐分裂。
- 这个新数据集用于生成决策树:每个节点的创建需要随机选择这个新数据集的几行(在创建一个节点之前,您必须随机生成这个新数据集的一些小的不同子集) .
上面列出的三个步骤是为构建每个决策树而执行的。刚刚描述的过程规定随机数生成发生多次。例如,第二步应确保每个决策树都使用与初始数据集略有不同的数据集进行训练,因此随机数生成器应避免生成相等的数据集(或者在任何情况下,这种情况发生的可能性应该非常低) .
本质上,在这个过程中,我们可以识别出两个随机性来源:
- 随机数据集的生成
N,每个数据集训练一个决策树; - 在创建节点之前,您必须
M从给定的数据集中执行随机提取。
我应该使用多少个随机数生成器?由于我有一个实现随机森林的类和另一个实现决策树的类,我想我会在第一个类(第一个随机源)中初始化一个随机数生成器,在第二个类中初始化另一个随机数生成器类(随机性的第二个来源)。这个对吗?
一般来说,选择正确数量的伪随机数生成器的准则是什么?