Vla*_*ape 3 python random numpy
我有这样的代码并使用 Jupyter-Notebook
for j in range(timesteps):
a_int = np.random.randint(largest_number/2) # int version
Run Code Online (Sandbox Code Playgroud)
我得到随机数,但是当我尝试将部分代码移动到函数时,我开始在每次迭代中收到相同的数字
def create_train_data():
np.random.seed(seed=int(time.time()))
a_int = np.random.randint(largest_number/2) # int version
return a
for j in range(timesteps):
c = create_train_data()
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况以及如何解决?我想可能是因为 Jupyter-Notebook 中的进程
有问题的代码行是
np.random.seed(seed=int(time.time()))
Run Code Online (Sandbox Code Playgroud)
由于您在一个完成得相当快的循环中执行,因此调用int()时间会将您的随机种子减少到整个循环的相同数量。如果你真的想手动设置种子,下面是一个更健壮的方法。
def create_train_data():
a_int = np.random.randint(largest_number/2) # int version
return a
np.random.seed(seed=int(time.time()))
for j in range(timesteps):
c = create_train_data()
Run Code Online (Sandbox Code Playgroud)
请注意种子是如何创建一次然后用于整个循环的,因此每次调用随机整数时,种子都会更改而不会被重置。
请注意,numpy 已经处理了一个伪随机种子。使用它不会获得更多随机结果。手动设置种子的一个常见原因是确保可重复性。您将程序开始时(笔记本顶部)的种子设置为某个固定整数(我在很多教程中看到 42),然后所有计算都来自该种子。如果有人想验证您的结果,算法的随机性不能成为混淆因素。
| 归档时间: |
|
| 查看次数: |
3350 次 |
| 最近记录: |