如何在python中固定随机生成器?

如何在python中固定随机生成器?,python,Python,我有一个代码,可以为网络中的每个节点随机分配一个标记,可以是“向上”或“向下” 我如何修复这些随机标记,以便在每次运行代码时它们不会更改 import networkx import random def assign_nodes(G): state = ['up','down'] for n in G: G.node[n]['sign']=random.choice(state) if __name__ =='__main__': input_data

我有一个代码,可以为网络中的每个节点随机分配一个标记,可以是“向上”或“向下”

我如何修复这些随机标记,以便在每次运行代码时它们不会更改

import networkx
import random

def assign_nodes(G):
    state = ['up','down']
    for n in G:
        G.node[n]['sign']=random.choice(state)
if __name__ =='__main__':
    input_data = open("data_test.txt",'r')
    graph = read_graph(input_data)
    assign_nodes(graph)

用于将随机数生成器初始化为常量值(用您选择的数字替换
常量)。

您可以保存图形:

from random import random
import networkx as nx

def make_graph():
    G=nx.DiGraph()
    N=10
    #make a random graph
    for i in range(N):
        for j in range(i):
            if 4*random()<1:
                G.add_edge(i,j)

    nx.write_dot(G,"savedgraph.dot")
    return G

try:
    G=nx.read_dot("savedgraph.dot")
except:
    G=make_graph() #This will fail if you don't use the same seed but have created the graph in the past. You could use the Singleton design pattern here.
print G.adj
从随机导入随机
将networkx导入为nx
def make_graph():
G=nx.DiGraph()
N=10
#做一个随机图
对于范围(N)中的i:
对于范围(i)中的j:

如果4*random(),谢谢你的评论,但由于我的图表非常大,而且我想多次运行该程序,所以它没有意义。它可能仍然有意义。每次从磁盘读取图形比从头开始创建图形快还是慢?如果您花费大量时间构建图表,这可能值得测试。谢谢您的评论。我的代码保留未定义全局名称“常量”的错误。我猜少了什么@masti:实际常量,而不是名称
常量
!例如,
random.seed(3643781349)
。你读过我在括号里写的吗?您需要用实际的常量值替换我的占位符
常量
<例如,代码>0
。酷!在我的例子中,我在random.choice(state)之前写了random.seed('string'),它工作得很好。谢谢