草庐IT

ruby - Ruby 兰特的有效种子范围是多少?

Ruby将PRNG实现为“修改后的MersenneTwister,周期为2**19937-1”。1我对MT的理解是它在2^32种不同的种子上运行。让我感到困惑的是Random.new(seed)接受任意大的数字,例如Random.new(2**100)。但是,我无法找到(逻辑上的)碰撞:Random.new(1).rand(10**5)==Random.new(2**32-1).rand(10**5)=>falseRandom.new(1).rand(10**5)==Random.new(2**32).rand(10**5)=>falseRandom.new(1).rand(10**5

java - 兰特流的高性能缓冲

我的代码会消耗大量(目前为数百万,最终为数十亿)相对较短(5-100个元素)的随机数数组,并对它们进行一些不太费力的数学运算。随机数是随机的,理想情况下我想在多核上生成它们,因为随机数生成占我运行时间的50%以上。但是,我很难以不比单线程方法慢的方式分配大量小任务。我的代码目前看起来像这样:for(inti=0;i我采取的没有奏效的方法是:1+个线程填充ArrayBlockingQueue,我的主循环使用并填充数组(这里的装箱/拆箱是killer级操作)在执行数学的非依赖部分时使用Callable生成vector(产生future)(看起来间接的开销超过了我获得的任何并行性yield)