如何在特定范围内创建一个随机数组

8
假设我想要创建一个包含5个元素的列表或numpy数组,就像这样:
array = [i, j, k, l, m] 

其中:

  • i 的范围在1.5到12.4之间
  • j 的范围在0到5之间
  • k 的范围在4到16之间
  • l 的范围在3到5之间
  • m 的范围在2.4到8.9之间.

这是一个展示部分范围包括小数的示例。有没有简单易行的方法来实现呢?


2
五维还是五个元素? - Divakar
1
使用5个适当的np.random函数调用,并将结果存储在一个数组中。 - user2357112
@Divakar 五行元素 :-D - Clement Attlee
j、k和l可以取小数值吗? - user2357112
@user2357112 不行,这些只接受自然数。 - Clement Attlee
显示剩余2条评论
3个回答

11

你可以直接这样做(感谢 user2357112!)

[np.random.uniform(1.5, 12.4), np.random.uniform(0, 5), ...]

使用numpy.random.uniform函数。


2
这已经存在了,它就是np.random.uniform - user2357112
1
这是一个很好的答案,但它忽略了一些范围不包括分数的事实。 - Clement Attlee
@MSeifert 啊,明白了。回答得不错。 - Ami Tavory
@AmiTavory jkl应该只生成自然数(即没有小数)。对于其余的,随机生成的数字可以是分数。如果我表达不清楚,很抱歉。 - Clement Attlee
1
@ClementAttlee 好的,我建议你看看Seifert的回答,他显然解决了这个问题(很抱歉,但我没有从问题中得到这一点)。 - Ami Tavory
显示剩余3条评论

6
我建议手动创建它们,并稍后再创建列表:
import numpy as np
i = np.random.uniform(1.5, 12.4)
j = np.random.randint(0, 5)  # 5 not included use (0, 6) if 5 should be possible
k = np.random.randint(4, 16) # dito
l = np.random.randint(3, 5)  # dito
m = np.random.uniform(2.4, 8.9.)

array = np.array([i, j, k, l, m]) # as numpy array
# array([  3.33114735,   3.        ,  14.        ,   4.        ,   4.80649945])

array = [i, j, k, l, m]           # or as list
# [3.33114735, 3, 14, 4, 4.80649945]

如果您想一次性创建它们,可以使用np.random.random函数,使用范围和下限来修改它们,并在不需要浮点数的地方将它们转换为整数:
# Generate 5 random numbers between 0 and 1
rand_numbers = np.random.random(5) 

# Lower limit and the range of the values:
lowerlimit = np.array([1.5, 0, 4, 3, 2.4])
dynamicrange = np.array([12.4-1.5, 5-0, 16-4, 5-3, 8.9-2.4]) # upper limit - lower limit

# Apply the range
result = rand_numbers * dynamicrange + lowerlimit

# convert second, third and forth element to integer
result[1:4] = np.floor(result[1:4]) 

print(result)
# array([ 12.32799347,   1.        ,  13.        ,   4.        ,   7.19487119])

1
import random
array = [random.uniform(1.5, 12.4), random.uniform(0,5)]

print(array)

打印:

[9.444064187694842, 1.2256912728995506]

你可能想要用round()函数将它们四舍五入。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接