如何从一组随机数中随机选择?

时间:2017-02-22 04:36:04

标签: python random

  • 我有一系列表达为
  

y = a*np.exp(-t/T1) + a*np.exp(-t/T2) + a*np.exp(-t/T3) + a*np.exp(-t/T4) + a*np.exp(-t/T5)

  • 我想要生成此系列n次。

  • 对于每次迭代,我希望从另一组值中选择T1-T5值。

  • 这些值也是随机数的范围 -

value1 = np.random.uniform(1,5)
value2 = np.random.uniform(6,10)
value3 = np.random.uniform(11,15)
value4 = np.random.uniform(16,20)
value5 = np.random.uniform(21,25)
value6 = np.random.uniform(26,30)
value7 = np.random.uniform(31,35)
value8 = np.random.uniform(36,40)
value9 = np.random.uniform(41,45)
value10 = np.random.uniform(46,50)

完成此任务的最简单方法是什么?我可以使用像np.random.choice这样的东西从每个T的值集中选择吗?

2 个答案:

答案 0 :(得分:1)

是的,np.random.choice可以帮助您在值池中选择5个唯一候选者,然后您可以在池中为所选范围生成每个值。

import numpy as np
# you may want to set `replace` depending on your needs
candidates = np.random.choice(10, 5, replace=False)
t_values = [np.random.uniform(n*5+1, n*5+5) for n in candidates]

答案 1 :(得分:1)

如果我理解你的问题,那么一个简单的方法就是

# create the offsets for each iteration
offsets = 5 * np.random.randint(0, 10, (n, 1))
# create the actual samples and add the offsets
T = np.random.uniform(1, 5, (n, 5)) + offets
# compute result
Y = a * np.exp(-t / T).sum(axis=-1)