如何在Python中设置全局随机种子

2024-03-31

就像在 R 中一样,我想为整个脚本/会话全局设置一个随机种子,而不必每次执行函数或运行模型时都调用随机种子函数。我知道 sci-kit learn 使用 numpy RNG,但也找不到全局设置它的方法。

我在这里阅读了几篇关于这个主题的文章,例如这篇文章:Python 中 numpy.random 和 random.random 的区别 https://stackoverflow.com/questions/7029993/differences-between-numpy-random-and-random-random-in-python

它解释了两个 RNG 类别之间的差异,但没有解释如何全局设置它。

除了每次我希望输出相同时调用随机种子之外,是否没有其他方法可以做到这一点?

## Random Library

import random
##### Random seed given
random.seed(42)
print(random.random()) #will generate a random number 

##### No seed given
print(random.random()) #will generate a random number 

##### Random seed given
random.seed(42)
print(random.random()) #will generate a random number 


#############################

## Numpy Library

import numpy as np

##### Random seed given
np.random.seed(42)
print(np.random.random())

##### No seed given
print(np.random.random())

##### Same seed given
np.random.seed(42)
print(np.random.random())

random_seed_testing_python_empirical_coding

凭经验测试 python 全局和本地设置是否随机种子。

至少在 colab ipython 笔记本中, “全局”随机种子设置不会自动应用于所有函数 重置函数中的随机种子不会更改全局设置。

仅仅导入全局种子设置变量并不会改变这一点。

手动重置每个函数中的随机种子 到所需的种子设置变量
作为全局导入global global_seed, 或作为参数输入导入到函数中(global_seed)将使随机种子以全局统一的方式运行(在所有函数中)。

示例 colab 输出:

first print
first Random Number: 82
first Random Number: 82

function_no_reset Random Number before reset: 15
function_no_reset Random Number after: 4

function_no_reset Random Number before reset: 95
function_no_reset Random Number after: 36

function_reset Random Number before reset: 32
function_reset Random Number after: 29

function_reset Random Number before reset: 71
function_reset Random Number after: 10

function_global_seed Random Number before reset: 82
function_global_seed Random Number after: 15

function_global_seed Random Number before reset: 82
function_global_seed Random Number after: 15

last Random Number: 82
last Random Number: 82

code

import random

print("first print")
# Set the global random seed
global_seed = 42
random.seed(global_seed)
# Generate a random number
random_number = random.randint(1, 100)
# Print the random number along with the function name
print(f"first Random Number: {random_number}")
print(f"first Random Number: {random_number}\n")

# Function to generate and print a random number
def function_no_reset():

    # Generate a random number
    random_number = random.randint(1, 100)
    # Print the random number along with the function name
    print(f"function_no_reset Random Number before reset: {random_number}")

    # Generate a random number
    random_number = random.randint(1, 100)

    # Print the random number along with the function name
    print(f"function_no_reset Random Number after: {random_number}\n")


# Function to generate and print a random number
def function_reset():
    global global_seed

    # Generate a random number
    random_number = random.randint(1, 100)
    # Print the random number along with the function name
    print(f"function_reset Random Number before reset: {random_number}")

    # Generate a random number
    random_number = random.randint(1, 100)

    # Reset the random seed for this function
    random.seed(random_number)

    # Print the random number along with the function name
    print(f"function_reset Random Number after: {random_number}\n")

# Function to generate and print a random number
def function_global_seed():
    global global_seed
    random.seed(global_seed)

    # Generate a random number
    random_number = random.randint(1, 100)
    # Print the random number along with the function name
    print(f"function_global_seed Random Number before reset: {random_number}")

    # Generate a random number
    random_number = random.randint(1, 100)

    # Reset the random seed for this function
    random.seed(random_number)

    # Print the random number along with the function name
    print(f"function_global_seed Random Number after: {random_number}\n")


# Function to generate and print a random number
def function_import_seed(global_seed):
    random.seed(global_seed)

    # Generate a random number
    random_number = random.randint(1, 100)
    # Print the random number along with the function name
    print(f"function_import_seed Random Number before reset: {random_number}")

    # Generate a random number
    random_number = random.randint(1, 100)

    # Reset the random seed for this function
    random.seed(random_number)

    # Print the random number along with the function name
    print(f"function_import_seed Random Number after: {random_number}\n")

# Test the functions
function_no_reset()
function_no_reset()

function_reset()
function_reset()

function_global_seed()
function_global_seed()

function_import_seed(global_seed)
function_import_seed(global_seed)

# Print the random number along with the function name
print(f"last Random Number: {random_number}")
print(f"last Random Number: {random_number}\n")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中设置全局随机种子 的相关文章

  • 高效地将大型 Pandas 数据帧写入磁盘

    我正在尝试找到使用 Python Pandas 高效地将大型数据帧 250MB 写入磁盘或从磁盘写入的最佳方法 我已经尝试了所有方法Python 数据分析 但表现却非常令人失望 这是一个更大项目的一部分 该项目探索将我们当前的分析 数据管理
  • minAreaRect OpenCV 返回的裁剪矩形 [Python]

    minAreaRectOpenCV 中返回一个旋转的矩形 如何裁剪矩形内图像的这部分 boxPoints返回旋转矩形的角点的坐标 以便可以通过循环框内的点来访问像素 但是在 Python 中是否有更快的裁剪方法 EDIT See code在
  • Python设置1和True的解释

    在 IPython 3 交互式 shell 中 In 53 set2 1 2 True hello In 54 len set2 Out 54 3 In 55 set2 Out 55 hello True 2 是因为 1 和 True 得到
  • 计算熊猫数据帧几个月的总和

    我有一个 pandas 数据框 如下所示 ID Year R1 R1 f KAR1 20201001 1 5 KAR1 20201101 2 6 KAR1 20201201 3 7 KAR1 20210101 4 8 KAR1 202102
  • 检查子字符串是否在字符串列表中?

    我之前已经找到了这个问题的一些答案 但它们对于当前的Python版本来说似乎已经过时了 或者至少它们对我不起作用 我想检查字符串列表中是否包含子字符串 我只需要布尔结果 我找到了这个解决方案 word to check or wordlis
  • 在 PhotoImage 下调整图像大小

    我需要调整图像大小 但我想避免使用 PIL 因为我无法使其在 OS X 下工作 不要问我为什么 无论如何 因为我对 gif pgm ppm 感到满意 所以 PhotoImage 类对我来说没问题 photoImg PhotoImage fi
  • 如何将 numpy rearray 的子集转换为连续数组?

    我有一个recarray来自读取 csv 文件 我有兴趣将列的子集转换为连续浮点数组 我想避免将它们转换为列表或将它们一一堆叠 我尝试了中的建议https stackoverflow com a 11792956 https stackov
  • 如何调试 numpy 掩码

    这个问题与this one https stackoverflow com q 73672739 11004423 我有一个正在尝试矢量化的函数 这是原来的函数 def aspect good angle float planet1 goo
  • 烧瓶 - 404 未找到

    我是烧瓶开发的新手 这是我在烧瓶中的第一个程序 但它向我显示了这个错误 在服务器上找不到请求的 URL 如果您输入了网址 请手动检查拼写并重试 这是我的代码 from flask import Flask app Flask name ap
  • Karasuba算法递归过多

    我正在尝试用 c 实现 Karasuba 乘法算法 但现在我只是想让它在 python 中工作 这是我的代码 def mult x y b m if max x y lt b return x y bm pow b m x0 x bm x1
  • Pandas如何按时间段过滤DataFrame

    我有一个包含下表的文件 Name AvailableDate totalRemaining 0 X3321 2018 03 14 13 00 00 200 1 X3321 2018 03 14 14 00 00 200 2 X3321 20
  • Python:“直接”调用方法是否实例化对象?

    我是 Python 新手 在对我的对象进行单元测试时 我注意到一些 奇怪 的东西 class Ape object def init self print ooook def say self s print s def main Ape
  • django 中的身份验证方法返回 None

    你好 我在 django 中做了一个简单的注册和登录页面 当想要登录时 登录视图中的身份验证方法不返回任何内容 我的身份验证应用程序 模型 py from django db import models from django contri
  • 如何让 Streamlit 每 5 秒重新加载一次?

    我必须每 5 秒重新加载 Streamlit 图表 以便在 XLSX 报告中可视化新数据 如何实现这一目标 import streamlit as st import pandas as pd import os mainDir os pa
  • 导入目录下的所有模块

    有没有办法导入当前目录中的所有模块 并返回它们的列表 例如 对于包含以下内容的目录 mod py mod2 py mod3 py 它会给你
  • 将 Python Selenium 输出写入 Excel

    我编写了一个脚本来从在线网站上抓取产品信息 目标是将这些信息写入 Excel 文件 由于我的Python知识有限 我只知道如何在Powershell中使用Out file导出 但结果是每个产品的信息都打印在不同的行上 我希望每种产品都有一条
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 无法将matplotlib安装到pycharm

    我最近开始使用Python速成课程学习Python编程 我陷入困境 因为我无法让 matplotlib 在 pycharm 中工作 我已经安装了pip 我已经通过命令提示符使用 pip 安装了 matplotlib 现在 当我打开 pych
  • 如何使用logging.conf文件使用RotatingFileHandler将所有内容记录到文件中?

    我正在尝试使用RotatingHandler用于 Python 中的日志记录目的 我将备份文件保留为 500 个 这意味着我猜它将创建最多 500 个文件 并且我设置的大小是 2000 字节 不确定建议的大小限制是多少 如果我运行下面的代码
  • 为什么我的 PyGame 应用程序根本不运行?

    我有一个简单的 Pygame 程序 usr bin env python import pygame from pygame locals import pygame init win pygame display set mode 400

随机推荐