Random 非递归随机数发生器

Random 非递归随机数发生器,random,concurrency,opencl,random-seed,Random,Concurrency,Opencl,Random Seed,我已经搜索了伪RNG算法,但我所能找到的似乎都是通过使用前一个结果作为种子来生成下一个数字。有没有一种非递归地生成它们的方法 我需要的场景是在OpenCL并发编程期间,每个线程/像素需要一个独立的RNG。我试着用大数字+工作id给它们播种,但结果有一种强烈的视觉模式。我尝试了几种不同的RNG算法,但都有这个问题。显然,它们仅在递归生成时保证数字是独立的,而在使用序列号作为种子时则不保证 所以我的问题是:我能从序列号数组中独立地为每个数字生成一个随机数数组吗?或者从数学上讲这是不可能的? 作为我的

我已经搜索了伪RNG算法,但我所能找到的似乎都是通过使用前一个结果作为种子来生成下一个数字。有没有一种非递归地生成它们的方法

我需要的场景是在OpenCL并发编程期间,每个线程/像素需要一个独立的RNG。我试着用
大数字+工作id
给它们播种,但结果有一种强烈的视觉模式。我尝试了几种不同的RNG算法,但都有这个问题。显然,它们仅在递归生成时保证数字是独立的,而在使用序列号作为种子时则不保证

所以我的问题是:我能从序列号数组中独立地为每个数字生成一个随机数数组吗?或者从数学上讲这是不可能的?

作为我的openCL问题的解决方案,我可以先递归地预生成一个巨大的随机数数组并存储在GPU内存中,然后使用seed作为索引使用它们。但是我对上面的问题很好奇,因为根据我对混沌理论非常简单的理解,仅仅通过做一系列的溢出和截止,这似乎是非常可能的

我能从一个序列号数组中生成一个随机数数组,每个数的时间是独立的和恒定的吗?或者这在数学上是不可能的


当然可以-在countnig模式下使用分组密码。它通常被称为,第一个被广泛使用的是

,这正是我要寻找的,根据这些链接,我最终借用了一个实现,输出像素看起来完全随机。@extrAme Hot cipher/hash现在似乎是ChaCha20,您可能想看看它: