Python Numpy : Random number in a loop

标签 python numpy random

我有这样的代码并使用 Jupyter-Notebook

for j in range(timesteps):    
    a_int = np.random.randint(largest_number/2) # int version

我得到了随机数,但是当我尝试将部分代码移动到函数中时,我开始在每次迭代中收到相同的数字

def create_train_data():        
    np.random.seed(seed=int(time.time()))     
    a_int = np.random.randint(largest_number/2) # int version
    return a

for j in range(timesteps):    
    c = create_train_data()  

为什么会发生这种情况以及如何解决?我想可能是因为 Jupyter-Notebook 中的进程所致

最佳答案

有问题的代码行是

np.random.seed(seed=int(time.time()))

由于您在一个完成得相当快的循环中执行,因此及时调用 int() 会将整个循环的随机种子数量减少到相同的数量。如果您确实想手动设置种子,以下是更可靠的方法。

def create_train_data():   
    a_int = np.random.randint(largest_number/2) # int version
    return a

np.random.seed(seed=int(time.time()))
for j in range(timesteps):
    c = create_train_data()

请注意种子是如何创建一次然后用于整个循环的,以便每次调用随机整数时种子都会更改而不会重置。

请注意,numpy 已经处理了伪随机种子。使用它并不会获得更多随机结果。手动设置种子的一个常见原因是为了确保再现性。您在程序开始时(笔记本顶部)将种子设置为某个固定整数(我在很多教程中看到 42),然后所有计算都从该种子开始。如果有人想验证您的结果,算法的随机性不能成为混杂因素。

关于Python Numpy : Random number in a loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52390665/

相关文章:

Python 模块似乎没有正确安装

python - 当需要用 python pandas 替换字符串时,如何有效避免替换子字符串?

python-3.x - numpy.nan_to_num - 'nan' 关键字无法识别

python - 如何在python中使用矩阵和向量之间的元素乘法

algorithm - 将随机范围从 1–5 扩展到 1–7

Pythonic 多态参数

python - 使用缺失值重新映射 `numpy.array`

PHP:生成不包括(0、1、O 和 L)的随机代码

Python - 来自文件的行 - 所有组合

python - 以列表为元素对 pandas 列进行分组和聚合,并在列表中获取唯一值