当前位置: 首页 > 知识库问答 >
问题:

如何生成一个 2D 数组,其元素在 axis=0 处是均匀随机数,在 axis=1 处是法向随机数

都超英
2023-03-14

我正在尝试使用numpy或scipy生成二维数组,例如(10000,1024)。我希望此数组的每一行的元素满足正态分布。但是,每列的元素都是均匀的随机数。

我不知道如何实现这个目标。任何帮助都将不胜感激。

谢谢。

共有1个答案

章绪
2023-03-14

您不能在列上有“完美”的均匀分布,而在行上有正态分布(如果您谈论的是随机变量矩阵)。

但如果刻度(标准偏差)不太宽,则可以组合sps。normsps。统一,以便位置(平均值)和比例能够足够均匀地按行分布。

例如

# imports
import numpy as np
import scipy.stats as sps
import seaborn as sns
import matplotlib.pyplot as plt

# define rows and columns
# define rows and columns
rows = 10000
cols = 1024
# generate random samples
matrix = sps.norm(
    # uniformly distributed locations
    loc=sps.uniform(0, 200).rvs(rows).reshape(-1, 1),
    # uniformly distributed scales
    scale=sps.uniform(1, 5).rvs(rows).reshape(-1, 1),
).rvs((rows, cols))

您可以验证所有行都是正态分布的

fig, ax = plt.subplots(2, 4, figsize=(15, 8))
# take some random test rows
test_rows = np.random.choice(rows, size=8)
# plot rows histplots
for i, row in enumerate(test_rows):
    sns.histplot(matrix[row,:].ravel(), ax=ax.flat[i])
    ax.flat[i].set(
        ylabel=None,
        title=f'row {row}'
    )

和列非常类似于均匀分布

fig, ax = plt.subplots(2, 4, figsize=(15, 8))
# take some random test columns
test_cols = np.random.choice(cols, size=8)
# plot columns histplots
for i, col in enumerate(test_cols):
    sns.histplot(matrix[:,col].ravel(), ax=ax.flat[i])
    ax.flat[i].set(
        ylabel=None,
        title=f'column {col}'
    )

但是标准偏差越高,越多的列将偏离均匀分布而趋向正态分布。

 类似资料:
  • 问题内容: 您能告诉我任何生成非均匀随机数的方法吗? 我正在使用Java,但是代码示例可以随心所欲。 一种方法是通过将两个统一的随机数加在一起(即滚动2个骰子)来创建歪斜分布。 问题答案: 您想要什么分布的偏差? 这是一种始终有效的技术,但并不总是最有效的。累积扰动函数P(x)给出值低于x的时间的分数。因此,在x的最小可能值处P(x)= 0,在x的最大可能值处P(x)= 1。每个分布都有一个唯一的

  • 这个问题以前也有人问过,但我从来没有真正看到过好的答案。 > 我想生成8个和为0.5的随机数。 我希望每个数字都是从一个均匀分布中随机选择的(即下面的简单函数将不起作用,因为数字将不是均匀分布的)。 代码应该是可推广的,这样您就可以生成N个和M(其中M是正浮点)的均匀随机数。如果可能的话,能否也请你解释一下(或用一个图表示)为什么你的解会在适当的范围内均匀地产生随机数? 失手的相关问题: 在pyt

  • 如何在一定范围内生成安全的统一随机数?范围可能在0到100之间。(上限不是2的幂)。 <代码>java。安全SecureRandom似乎提供了范围0。。2^n。

  • 本文向大家介绍0~1均匀分布的随机器如何变化成均值为0,方差为1的随机器相关面试题,主要包含被问及0~1均匀分布的随机器如何变化成均值为0,方差为1的随机器时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 0~1的均匀分布是均值为1/2,方差为0.转成均值为0,方差为1.概率论题目

  • 本文向大家介绍如何生成一个随机数?相关面试题,主要包含被问及如何生成一个随机数?时的应答技巧和注意事项,需要的朋友参考一下  

  • 问题内容: 我试图识别/创建一个函数(在Java中),该函数给我一个非均匀的分布式数字序列。如果我有一个函数说它将给我一个从到的随机数。 该函数最适合任何给定的函数,下面仅是我想要的示例。 但是,如果我们说函数将返回来自分布式的s nonuni。 我想例如说 约占所有案件的20%。 大约是所有情况的50%。 约占所有案件的20%。 大约是所有情况的10。 总之somting,给我一个数字,如正态分