如何修复随机生成的值?

6 投票
2 回答
23071 浏览
提问于 2025-04-15 16:25

我遇到了一个问题,希望有人能帮帮我。以下是我的示例代码。

from random import *    
from numpy import *
r=array([uniform(-R,R),uniform(-R,R),uniform(-R,R)])

def Ft(r):
    for i in range(3):
       do something here, call r
    return something

不过我发现,在Python的命令行中,每次我运行Ft这个函数时,它给我的结果都不一样……看起来在这个函数里,每次for循环迭代时,调用一次r就会得到一个随机数……但是当我调用这个函数时,初始的随机数并没有固定下来……我该怎么解决这个问题呢?如果我用b=copy(r)然后在Ft函数里调用b,这样行不行?谢谢!

相关问题:

2 个回答

1

我觉得你是想说“列表”,而不是“数组”。你在尝试使用一些函数,但其实并不需要。如果我理解得没错的话,你是想修改一组随机的小数:

  import random
  r=[random.uniform(-R,R) for x in range(3)]
  def ft(r):
      for i in range(len(r)):
          r[i]=???
19

你的意思是你希望每次运行这个函数时,random.uniform() 的调用都返回相同的值序列吗?
如果是这样的话,你需要使用 random.seed() 来设置一个固定的起始值。这样做的目的是让随机数生成器从同一个地方开始生成数字。如果不这样做,系统会用当前的时间来初始化随机数生成器,这样每次生成的序列就会不同。

像这样应该可以工作

random.seed(42) # Set the random number generator to a fixed sequence.
r = array([uniform(-R,R), uniform(-R,R), uniform(-R,R)])

撰写回答