两个不同的编辑器中的相同种子给我不同的结果(Pycharm和Jupyter Notebook)

问题描述 投票:1回答:1

我有以下代码:

import json
import pandas as pd
import numpy as np
import random

pd.set_option('expand_frame_repr', False)  # To view all the variables in the console

# read data
records = []
with open('./data/data_file.txt', 'r') as file:
    for line in file:
        record = json.loads(line)
        records.append(record)

# construct list of ids
ids = set()
for record in records:
    for w in record['A']:
        ids.add(w['NAME'])

random.seed(1234); sampled_ids = random.sample(ids,50)

[当我在Pycharm IDE中运行此代码一次,然后在Jupyter笔记本中运行该代码时,我会在每个样本中获取不同的ID。发生了什么事?

P.S我在最后一行使用了分号,因为我发现,如果尝试在一行上设置种子,然后在下一行上采样-即使在同一IDE中],则每次运行都会得到不同的结果。对我来说,这真是神秘。我使用Python 3.7

我有以下代码:import json import pandas as pd import numpy as np import random pd.set_option('expand_frame_repr',False)#要在控制台中查看所有变量#读取数据记录...

python jupyter-notebook pycharm random-seed
1个回答
0
投票

这种行为的原因在于setSet是根据对象的hash值(集合的元素必须是可哈希的,即必须具有__hash__ method)从对象构造而成的,并且在启动另一个控制台时__hash__值会有所不同。 (并非总是如此,但这是另一个主题)。例如,同一IDE中的两个consol有结果:

© www.soinside.com 2019 - 2024. All rights reserved.