生成浮点数列表,其中每个数字均次于另一个浮点数列表

时间:2019-03-27 16:38:37

标签: python list numpy random

我正在使用以下代码来获取浮点数的随机列表:

random_A = np.random.uniform(low=0, high=10, size=(50,))

所以我得到了50个花车的列表

[0.35664866 4.76750599 2.05083389 9.53811567 5.36920383 8.91679955
 2.19965617 2.62523134 6.55224616 9.35766331 5.79652488 4.23194067
 2.72168337 5.31431884 8.3975979  9.29497168 5.42797236 5.64302212
 2.91821098 5.06305922 1.88212402 0.24593891 9.45021432 0.95423611
 9.36860165 2.46100709 3.80709829 1.08442665 3.28513088 9.75743916
 5.36187267 4.61001088 0.17912406 6.52406152 3.26927165 4.40187936
 6.79600876 8.10418648 1.06927133 5.3087785  1.85829928 2.20111922
 1.6910625  6.25714944 0.29338196 5.73195802 0.73971446 3.62506435
 9.0166149  3.90316395]

我现在想要得到的是另一个包含50个浮点数的列表,我们称其为random_B,其中该列表的每个浮点数都小于第一个列表中比较的数字(random_A)。你能帮我吗?

致谢

1 个答案:

答案 0 :(得分:2)

这是一种间接的方法:生成第一个数组,然后使用该数组的单个元素作为上限,再次使用np.random.uniform

生成第二个数组。
import numpy as np; np.random.seed(121)

random_A = np.random.uniform(low=0, high=10, size=(10,))
print (random_A)
# [1.11330828 2.10767575 2.32962488 1.51944557 8.30178138 4.07919415 5.557906   7.45523942 2.48499756 9.68659399]

random_B = np.array([np.random.uniform(0, i) for i in random_A])
print (random_B)
# [1.06063118 1.03244254 0.04262587 1.30308582 3.36170915 2.53919206 1.64164697 6.93030501 1.00795353 5.49521109]

编辑

如@Severin在以下评论中所建议的那样更好

random_B = np.random.uniform(low=0, high=random_A, size=(10,))