如何在Python中生成特定范围内的n维随机变量

6 投票
2 回答
10017 浏览
提问于 2025-04-17 17:49

我想在Python中生成范围在[-10,10]之间的均匀随机数,这些随机数可以是2维、3维、4维、5维等等。

我试过使用random.uniform(-10,10),但那只是生成一维的随机数。我不知道怎么生成n维的随机数。这里的2维是指,

[[1 2], [3 4]...]

2 个回答

2

使用 random.uniform

import random

random_variable_in_range_of_minus_ten_and_plus_ten = random.uniform(-10, 10)

请注意,它的范围是(设计上)在[-10, 10)之间,而不是[-10, 10]。

关于n维的部分,我不是很明白你的意思,但假设它是一个包含n个数字的向量,你可以:

def n_dimensional_random_variables(n, lbound=-10, rbound=10):
  return [random.uniform(lbound, rbound) for i in xrange(n)]
11

因为提到了 numpy,你可以使用 numpy.random 里的随机函数:

>>> import numpy as np
>>> np.random.uniform(-10,10)
7.435802529756465
>>> np.random.uniform(-10,10,size=(2,3))
array([[-0.40137954, -1.01510912, -0.41982265],
       [-8.12662965,  6.25365713, -8.093228  ]])
>>> np.random.uniform(-10,10,size=(1,5,1))
array([[[-3.31802611],
        [ 4.60814984],
        [ 1.82297046],
        [-0.47581074],
        [-8.1432223 ]]])

你可以根据自己的需要调整 size 这个参数。

撰写回答