不同进程中的随机数相同是一个常见的问题,这是因为不同进程在同一时刻调用随机数生成器时,可能会使用相同的种子值,导致生成相同的随机数序列。
为了解决这个问题,可以使用以下方法:
import random
import os
# 使用进程ID作为种子值
random.seed(os.getpid())
# 生成随机数
random_number = random.randint(1, 10)
print(random_number)
# 使用多进程模块
from multiprocessing import Process, Pipe
import random
# 随机数生成的进程
def generate_random(conn):
random_number = random.randint(1, 10)
conn.send(random_number)
conn.close()
# 创建进程间通信的管道
parent_conn, child_conn = Pipe()
# 创建生成随机数的进程
p = Process(target=generate_random, args=(child_conn,))
p.start()
# 获取生成的随机数
random_number = parent_conn.recv()
print(random_number)
# 等待进程结束
p.join()
使用上述方法,可以确保不同进程中的随机数是不同的。
下一篇:不同进程中的同一用户