我正在实验实现CLT (中央极限定理)时数据分布的差异,比较两种方法:一种使用纯Python,另一种使用Numpy。
这是我的密码:
from numpy.random import seed
from numpy.random import randint
from numpy import mean
import matplotlib.pyplot as plt
import random
# [With Numpy]
#
# Generate 1000 samples of 50 men, from 60 to 90 Kilos and calculate the mean
# of
如果你看一下C++11中的随机混洗的规范,你会发现有3个函数。我的问题是:典型的用法和优势是什么:
template< class RandomIt, class URNG >
void shuffle( RandomIt first, RandomIt last, URNG&& g );
对比:
template< class RandomIt >
void random_shuffle( RandomIt first, RandomIt last );
我的意思是,似乎无论URNG是什么(均匀分布),结果都将是相同的(从统计角度来看)。我看到的唯一的
为什么我使用Numba xoroshiro128p得到与随机数组相同的数字?我想和Numpy随机数组np.random.rand一样。 from numba import cuda
from numba.cuda.random import create_xoroshiro128p_states, xoroshiro128p_uniform_float32
import numpy as np
@cuda.jit
def rand_array(rng_states, out):
thread_id = cuda.grid(1)
x = xoroshiro128p_unif
代码很简单:
import numpy
rng = numpy.random.default_rng(0)
control = rng.choice([0,1],p=[0.5,0.5])
for i in range(100):
print(control == rng.choice([0,1],p=[0.5,0.5]))
# Not only True gets printed
也许我遗漏了什么,但据我所知,使用完全相同参数运行的rng.choice应该总是返回相同的东西,如果它是种子的话。我遗漏了什么?
我需要回顾一下我的解决方案,从存储在MPP机器上的表中抽取100个随机行(现在是Netezza,稍后可能是hadoop/等等)。
我对使用Netezza的rand()不感兴趣,因为我希望以后能够复制相同的示例,而且我也不指望setseed()。
我现在使用的解决方案是:
SELECT * FROM MY_TABLE ORDER BY ID % 371, ID % 17, ID % 501, ID LIMIT 100
其中3个数字是我自己的RNG生成的素数。我在正确的轨道上吗?这个“随机”样本够随机的吗?
注意:我不需要它是一个加密强随机样本,我只是想确保每次都选择不同的样本,并且采样是一致的,
我刚刚开始使用Theano,我想知道为什么第一次在gpu上创建共享变量似乎会影响numpy的随机数生成器。有时,这个初始的创建似乎提前了随机数生成器。
在这段代码中,我探索了以下测试用例:
import numpy
import theano
from theano.compile.sharedvalue import shared
import theano.sandbox.cuda as tcn
def make_cpu_shared():
#Create, but don't return/use shared variable on cpu
shared(t