【问题标题】:the way of efficiently generating two random samples with dependency有效地生成两个具有依赖性的随机样本的方法
【发布时间】:2021-08-12 11:03:15
【问题描述】:

我想生成两组变量,h_minh_max

h_max = [h_max_1, h_max_2, …h_max_2000]
h_min = [h_min_1, h_min_2,… h_min_2000]

h_max的每个元素都是基于均匀分布生成的,即

h_max = np.random.uniform(0,  20, 2000). 

对于每个元素h_min_i,应该根据范围为0的均匀分布生成,对应的h_max_i,即h_min_i = np.random.uniform(0, h_max_i) 不使用迭代,如何高效生成h_min

【问题讨论】:

    标签: python-3.x numpy random scipy


    【解决方案1】:

    numpy.random.uniform 函数允许第一个和/或第二个参数是一个数组,而不仅仅是一个数字。它们的工作方式完全符合您的预期:

    h_max=np.random.uniform(0,20,2000)
    h_min=np.random.uniform(0,h_max,2000)
    

    但是,numpy.random.* 函数,例如 numpy.random.uniform,已成为 NumPy 1.17 的遗留函数,出于向后兼容性的原因,它们的算法预计将保持原样。但是,该版本并未弃用任何 numpy.random.* 函数,因此它们暂时仍然可用。另见this question

    在较新的应用程序中,您应该使用 1.17 版中引入的新系统,包括 numpy.random.Generator,如果您拥有该版本或更高版本。新系统的一个优点是应用程序较少依赖全局状态。 Generator 也有一个 uniform 方法,其工作方式与旧函数 numpy.random.uniform 大致相同。以下示例使用 Generator 并适用于您的情况:

    gen=np.random.default_rng() # Creates a default Generator
    h_max=gen.uniform(0,20,2000)
    h_min=gen.uniform(0,h_max,2000)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 2019-12-22
      • 2015-12-19
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 2020-09-09
      相关资源
      最近更新 更多