首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我如何避免从两个不同的随机变量中获得相同的值,但这些值来自相同的列表?

要避免从两个不同的随机变量中获得相同的值,同时这些值来自同一个列表,你可以采用以下几种方法:

1. 使用 Fisher-Yates 洗牌算法

Fisher-Yates 洗牌算法可以用来随机打乱一个数组的顺序,从而确保每次获取的值都是随机的且不重复。

代码语言:txt
复制
function shuffle(array) {
  let currentIndex = array.length, temporaryValue, randomIndex;

  // While there remain elements to shuffle...
  while (0 !== currentIndex) {

    // Pick a remaining element...
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex -= 1;

    // And swap it with the current element.
    temporaryValue = array[currentIndex];
    array[currentIndex] = array[randomIndex];
    array[randomIndex] = temporaryValue;
  }

  return array;
}

const values = [1, 2, 3, 4, 5];
const shuffledValues = shuffle(values);

const randomVariable1 = shuffledValues[0];
const randomVariable2 = shuffledValues[1];

2. 使用 Set 数据结构

Set 是一种集合数据结构,它可以帮助你确保元素的唯一性。

代码语言:txt
复制
const values = [1, 2, 3, 4, 5];
const randomVariable1 = Math.floor(Math.random() * values.length);
const randomVariable2 = Math.floor(Math.random() * values.length);

while (randomVariable1 === randomVariable2) {
  randomVariable2 = Math.floor(Math.random() * values.length);
}

const uniqueValues = new Set([values[randomVariable1], values[randomVariable2]]);

3. 使用递归函数

你可以编写一个递归函数来确保两个随机变量不相同。

代码语言:txt
复制
function getRandomValues(values, count = 2) {
  if (count === 1) {
    return values[Math.floor(Math.random() * values.length)];
  }

  const randomIndex = Math.floor(Math.random() * values.length);
  const randomValue = values[randomIndex];

  const remainingValues = values.filter((_, index) => index !== randomIndex);
  const nextRandomValue = getRandomValues(remainingValues, count - 1);

  return [randomValue, ...nextRandomValue];
}

const values = [1, 2, 3, 4, 5];
const [randomVariable1, randomVariable2] = getRandomValues(values);

应用场景

这种方法广泛应用于需要随机分配资源、生成唯一标识符、随机抽样等场景。例如,在游戏开发中,你可能需要随机分配角色或物品;在数据分析中,你可能需要随机抽样数据进行分析。

可能遇到的问题及解决方法

  1. 性能问题:如果列表非常大,递归方法可能会导致栈溢出。可以使用迭代方法替代递归。
  2. 随机性问题:确保随机数生成器的种子是随机的,以保证结果的随机性。

通过以上方法,你可以有效地避免从两个不同的随机变量中获得相同的值,同时这些值来自同一个列表。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python中Copula在多元联合分布建模可视化2实例合集|附数据代码

我们将从简单的二元Copula模型开始,逐步过渡到更复杂的多元模型,并介绍如何使用不同的Copula类型和参数来适应不同的数据特性。...具体来说,Copula函数是一个从[0,1]^n到[0,1]的映射,用于链接n个随机变量的边缘累积分布函数。它用于描述多元随机变量之间的依赖关系,这些关系可以是正相关、负相关或无相关。...Kaizong Ye 拓端分析师 从copula中抽样¶ 让我们用一个双变量示例来说明,并假设首先我们有一个先验知识,并知道如何对两个变量之间的依赖关系进行建模。...这些样本是伪独立的(我们知道,如果你用计算机来抽取样本,就不会有真正的独立,但好在是合理的独立)。 #不相关的数据:一个β值(x)和一个对数正态(y)。 a= 0.45#2....初始值为1(独立)。然后,对于每一个点i, 如果 , 那么 , 其中c是从1的分数列表中统一选择的,否则, . #相关数据:一个对数正态(y)。

8710
  • python中Copula在多元联合分布建模可视化2实例合集|附数据代码

    我们将从简单的二元Copula模型开始,逐步过渡到更复杂的多元模型,并介绍如何使用不同的Copula类型和参数来适应不同的数据特性。...具体来说,Copula函数是一个从[0,1]^n到[0,1]的映射,用于链接n个随机变量的边缘累积分布函数。它用于描述多元随机变量之间的依赖关系,这些关系可以是正相关、负相关或无相关。...Kaizong Ye 拓端分析师 从copula中抽样¶ 让我们用一个双变量示例来说明,并假设首先我们有一个先验知识,并知道如何对两个变量之间的依赖关系进行建模。...这些样本是伪独立的(我们知道,如果你用计算机来抽取样本,就不会有真正的独立,但好在是合理的独立)。 #不相关的数据:一个β值(x)和一个对数正态(y)。 a= 0.45#2....初始值为1(独立)。然后,对于每一个点i, 如果 , 那么 , 其中c是从1的分数列表中统一选择的,否则, . #相关数据:一个对数正态(y)。

    11610

    技术干货 | 如何选择上班路线最省时间?从AB测试数学原理说起

    z检验(z-test)是在数据是正态分布和随机抽样的假设下运行的,目的是验证测试集(B组)是否与该对照集(A组)有显著不同,但是如何执行这个测试呢? 假设有来自A组和B组中的每一组的5,000个样本。...零假设可以表示为: 这表示实验组和对照组是相同的。两个随机变量Xe和Xn分布在相同的群体平均值周围,所以我们的新随机变量X应该分布在0左右。...很显然,如果在一个给定的时间点从一个实验集和一个对照集中提取两个转化率,转化率的差值越大将导致z分数越大。因此就有了更多的证据表明两个集合分别来自不同的人群,而且这些人群带有不同的均值。...但因为这个度量值会受到偶然性的影响(奖励可能会被从最优赌博机选择中获得的期望奖励更高),我们可以选择使用遗憾值的期望值代替,定义为: 其中μ_t是在第t步从赌博机中获得的平均奖励(不可观测的)。...此外,两个方法的收敛速度也很不一样。在A/B测试中是指获得统计意义,在贝叶斯赌博机中是指累积遗憾值不再增加。

    1.7K70

    什么是“好的”统计估计器

    先决条件 如果你对一些核心概念有一定的了解,这些东西就会更容易理解,所以这里有一个快速的关键词列表: 偏差;分布;估计;估计量;期望值E(X);损失函数;均值;模型;观察;参数;概率;随机变量;样本;统计...如果我有一个公平的六面骰子,X可以取{1,2,3,4,5,6}中的每一个值,其概率为1/6,所以: E (X) = (1) + (1/6) (2) (1/6) + (3) (1/6) + (4) (1...Estimator,我们用来获得估计值的公式,它是一个取决于你获得的数据的随机变量。 Estimate :θ_hat,一旦我们将数据送入估计器,最后就会出现一些数字,这就是估计。...更通俗的说法就是就是“如果有两个具有相同偏差的估计器,我们选择方差较小的一个” 还有许多不同的方法可以选择“最佳”估算器。因为“好”的属性包括无偏性、相对效率、一致性、渐近无偏性和渐近效率等等。...MSE 是模型损失函数最流行的(也是普通的)选择,而且它往往是我们学习的第一个损失,所以我们就得到了: MSE = Bias² + Variance 总结 我们已经完成了数学计算,希望这篇文章可以从另外一个角度说明机器学习中的偏差

    74340

    用COPULA模型进行蒙特卡洛(MONTE CARLO)模拟和拟合股票收益数据分析|附代码数据

    双变量分布以及更高维度的分布都是可能的。  此示例说明如何在变量之间存在复杂关系或单个变量来自不同分布时使用 copula 从多元分布生成数据。...例如,金融风险的蒙特卡罗模拟可能具有代表不同保险损失来源的随机输入。这些输入可能被建模为对数正态随机变量。一个合理的问题是这两个输入之间的依赖性如何影响模拟结果。...事实上,从真实数据中可以知道相同的随机条件会影响两个来源,而在模拟中忽略这一点可能会导致错误的结论。 独立对数正态随机变量的模拟是微不足道的。最简单的方法是使用lognrnd函数。...但是简单的多元分布的列表并不长,它们仅适用于边缘都在同一族(甚至完全相同的分布)中的情况。在许多情况下,这可能是一个真正的限制。...size(sos,1); hist(stos(:,1),10); (这两个数据向量具有相同的长度,但这并不重要。) 我们可以为每个数据集分别拟合一个参数模型,并将这些估计值用作我们的边缘分布。

    60200

    用COPULA模型进行蒙特卡洛(MONTE CARLO)模拟和拟合股票收益数据分析|附代码数据

    双变量分布以及更高维度的分布都是可能的。  此示例说明如何在变量之间存在复杂关系或单个变量来自不同分布时使用 copula 从多元分布生成数据。...例如,金融风险的蒙特卡罗模拟可能具有代表不同保险损失来源的随机输入。这些输入可能被建模为对数正态随机变量。一个合理的问题是这两个输入之间的依赖性如何影响模拟结果。...事实上,从真实数据中可以知道相同的随机条件会影响两个来源,而在模拟中忽略这一点可能会导致错误的结论。 独立对数正态随机变量的模拟是微不足道的。最简单的方法是使用lognrnd函数。...但是简单的多元分布的列表并不长,它们仅适用于边缘都在同一族(甚至完全相同的分布)中的情况。在许多情况下,这可能是一个真正的限制。...size(sos,1); hist(stos(:,1),10); (这两个数据向量具有相同的长度,但这并不重要。) 我们可以为每个数据集分别拟合一个参数模型,并将这些估计值用作我们的边缘分布。

    1K40

    用COPULA模型进行蒙特卡洛(MONTE CARLO)模拟和拟合股票收益数据分析

    此示例说明如何在变量之间存在复杂关系或单个变量来自不同分布时使用 copula 从多元分布生成数据。 算法 默认情况下,fit 使用最大似然将 copula 拟合到 u。...总是可以使输入独立,虽然这是一个简单的选择,但并不总是明智的,可能会导致错误的结论。 例如,金融风险的蒙特卡罗模拟可能具有代表不同保险损失来源的随机输入。这些输入可能被建模为对数正态随机变量。...一个合理的问题是这两个输入之间的依赖性如何影响模拟结果。事实上,从真实数据中可以知道相同的随机条件会影响两个来源,而在模拟中忽略这一点可能会导致错误的结论。 独立对数正态随机变量的模拟是微不足道的。...但是简单的多元分布的列表并不长,它们仅适用于边缘都在同一族(甚至完全相同的分布)中的情况。在许多情况下,这可能是一个真正的限制。...size(sos,1); hist(stos(:,1),10); (这两个数据向量具有相同的长度,但这并不重要。) 我们可以为每个数据集分别拟合一个参数模型,并将这些估计值用作我们的边缘分布。

    2.7K12

    用COPULA模型进行蒙特卡洛(MONTE CARLO)模拟和拟合股票收益数据分析|附代码数据

    双变量分布以及更高维度的分布都是可能的。  此示例说明如何在变量之间存在复杂关系或单个变量来自不同分布时使用 copula 从多元分布生成数据。...例如,金融风险的蒙特卡罗模拟可能具有代表不同保险损失来源的随机输入。这些输入可能被建模为对数正态随机变量。一个合理的问题是这两个输入之间的依赖性如何影响模拟结果。...事实上,从真实数据中可以知道相同的随机条件会影响两个来源,而在模拟中忽略这一点可能会导致错误的结论。 独立对数正态随机变量的模拟是微不足道的。最简单的方法是使用lognrnd函数。...但是简单的多元分布的列表并不长,它们仅适用于边缘都在同一族(甚至完全相同的分布)中的情况。在许多情况下,这可能是一个真正的限制。...size(sos,1); hist(stos(:,1),10); (这两个数据向量具有相同的长度,但这并不重要。) 我们可以为每个数据集分别拟合一个参数模型,并将这些估计值用作我们的边缘分布。

    50530

    用COPULA模型进行蒙特卡洛(MONTE CARLO)模拟和拟合股票收益数据分析|附代码数据

    双变量分布以及更高维度的分布都是可能的。  此示例说明如何在变量之间存在复杂关系或单个变量来自不同分布时使用 copula 从多元分布生成数据。...总是可以使输入独立,虽然这是一个简单的选择,但并不总是明智的,可能会导致错误的结论。 例如,金融风险的蒙特卡罗模拟可能具有代表不同保险损失来源的随机输入。这些输入可能被建模为对数正态随机变量。...一个合理的问题是这两个输入之间的依赖性如何影响模拟结果。事实上,从真实数据中可以知道相同的随机条件会影响两个来源,而在模拟中忽略这一点可能会导致错误的结论。 独立对数正态随机变量的模拟是微不足道的。...但是简单的多元分布的列表并不长,它们仅适用于边缘都在同一族(甚至完全相同的分布)中的情况。在许多情况下,这可能是一个真正的限制。...size(sos,1); hist(stos(:,1),10); (这两个数据向量具有相同的长度,但这并不重要。) 我们可以为每个数据集分别拟合一个参数模型,并将这些估计值用作我们的边缘分布。

    67900

    用COPULA模型进行蒙特卡洛(MONTE CARLO)模拟和拟合股票收益数据分析|附代码数据

    双变量分布以及更高维度的分布都是可能的。  此示例说明如何在变量之间存在复杂关系或单个变量来自不同分布时使用 copula 从多元分布生成数据。...总是可以使输入独立,虽然这是一个简单的选择,但并不总是明智的,可能会导致错误的结论。 例如,金融风险的蒙特卡罗模拟可能具有代表不同保险损失来源的随机输入。这些输入可能被建模为对数正态随机变量。...一个合理的问题是这两个输入之间的依赖性如何影响模拟结果。事实上,从真实数据中可以知道相同的随机条件会影响两个来源,而在模拟中忽略这一点可能会导致错误的结论。 独立对数正态随机变量的模拟是微不足道的。...但是简单的多元分布的列表并不长,它们仅适用于边缘都在同一族(甚至完全相同的分布)中的情况。在许多情况下,这可能是一个真正的限制。...size(sos,1); hist(stos(:,1),10); (这两个数据向量具有相同的长度,但这并不重要。) 我们可以为每个数据集分别拟合一个参数模型,并将这些估计值用作我们的边缘分布。

    75720

    【深度学习基础】预备知识 | 概率

    输出是另一个相同长度的向量:它在索引 i 处的值是采样结果中 i 出现的次数。...由于概率论中的事件是来自样本空间的一组结果,因此我们可以为随机变量指定值的可取范围。...请注意,离散(discrete)随机变量(如骰子的每一面)和连续(continuous)随机变量(如人的体重和身高)之间存在微妙的区别。现实生活中,测量两个人是否具有完全相同的身高没有太大意义。...在这些情况下,我们将这个看到某个数值的可能性量化为密度(density)。高度恰好为1.80米的概率为0,但密度不是0。在任何两个不同高度之间的区间,我们都有非零的概率。...随机变量函数的方差衡量的是:当从该随机变量分布中采样不同值 x 时,函数值偏离该函数的期望的程度: \mathrm{Var}[f(x)] = E\left[\left(f(x) - E[f(x)]\

    7910

    学界 | Hinton提出的经典防过拟合方法Dropout,只是SDR的特例

    深度学习(Hinton et al,2006)引入了一些创新技术来减少、控制这些过拟合和过度参数化问题,包括用线性整流单元(ReLU)来减少连续梯度损失,用 Dropout 技术避免陷入局部最小值,以及通过有效的模型平均技术来增强泛化能力...具体而言,Dropout 实现了一个概率为 p(有偏的 0-1 抽签法)的伯努利随机变量,在每一轮更新时从网络架构中随机删除隐藏单元及其连接,从而产生一个稀疏的网络架构——其中剩余权重被更新并保留到下一个...SDR 用一个均值为µ_w_ij、标准差为 σ_w_ij 的随机变量将网络中的权值参数化。这些随机变量在每一次前馈激活中通过采样得到,从而建立指数级数量的共享权值的潜在网络。...图 4:表示采用 SDR 的 DenseNet-100 的第 21 层第 1 块的权重值频率的直方图,其中每个切片都是来自训练一个 epoch 的 snapshot,而最上面的切片是来自第一个 epoch...因此,每个权重梯度本身也是基于隐藏单元预测性能的随机变量,它让系统能够:(1)在相同的例程/刺激下接受多值响应假设,(2)保留一个预测历史,与 Dropout 不同,Dropout 是局部的隐藏单元权重

    37120

    概率扩散模型讲义 (Probabilistic Diffusion Models)

    关于正向扩散过程的最后一点是我们不需要训练一个机器学习模型来做这些。我们简单地机械地遵循等式(3)来变换来自数据分布pdata的样本x0,直到我们获得(近似地)来自更简单的pprior的变换样本xT。...人们可能会问我们从中获得了什么。在下一小节中,当我们颠倒这个过程时,这一点将有望变得清楚:从样本 开始,我们将逐渐改变它,直到我们获得一个(大约)来自pcomplex的x0。...简写Ex∼q表示期望是使用来自q的x值计算的。KL散度始终为正,但在交换p和q时不对称是其较不理想的数学性质之一。图5给出了一个使用两个高斯分布的示例,其中KL散度是红色曲线下的面积。...我们很快就会讨论如何使用它来生成(大约)从 pcomplex 中采样的新样本,但首先我们将总结迄今为止所发现的内容。...2.3.5 扩散过程和模型训练损失的总结 在下一节中,我们将考虑如何有效地优化关于θ的损失,但首先让我们总结一下我们目前的情况和我们是如何到达这里的: - 从预先确定和固定的扩散模型 开始,我们逐渐将数据点

    53010

    Theano 中文文档 0.9 - 7.2.2 更多示例

    此外,Theano对分配变量的位置和方式有更多的控制,这是在GPU上获得良好性能的重要因素之一。 可能会发生这种情况,你使用共享变量表达了某个公式,但你不想使用它的值。...在实践中,考虑givens的一个好方法是允许你用一个不同的表达式替换你的公式的任何部分,这个表达式的计算结果是一个相同形状和dtype的张量。...现在让我们使用这些对象。随机数发生器的内部状态是自动更新的,所以我们每次都得到不同的随机数。...每当从RandomStreams对象中绘制随机变量时,就会将元组添加到state_updates列表中。第一个元素是一个共享变量,它表示与此特定变量??...每当从RandomStreams对象中绘制随机变量时,就会将元组添加到state_updates列表中。第一个元素是一个共享变量,它表示与此特定变量??

    98520

    UCB Data100:数据科学的原理和技巧:第十六章到第十八章

    18.1 常见随机变量 有几种经常出现并且具有有用特性的随机变量情况。以下是我们将在本课程中进一步探讨的情况。括号中的数字是随机变量的参数,这些参数是常数。参数定义了随机变量的形状(即分布)和其值。...所有的情景都有相同的期望值,但方差不同。...在抽样时,我们做出(很大的)假设,即我们从总体中均匀随机地进行有放回抽样;我们样本中的每个观察都是从我们的总体分布中独立同分布地随机抽取的随机变量。...重要的是,中心极限定理假设我们样本中的每个观察都是从总体的分布中抽取的 i.i.d。此外,中心极限定理仅在 n “大”时才准确,但什么样的“大”样本量取决于特定的分布。...估计量的自助法抽样分布并不完全匹配该估计量的抽样分布,但通常是接近的。同样,自助法分布的方差通常接近于估计量的真实方差。下面的示例显示了使用样本大小 n=50 从已知总体进行不同自助法的结果。

    27310

    迷你规模的Metropolis-Hastings

    这些方法涉及对典型的SGD更新的微小变化,这些更新从概率分布产生样本,该概率分布近似于贝叶斯模型后验p(θ|x)。...这些方法将SGD转换成MCMC方法,因此需要Metropolis-Hastings(MH)测试来获得准确的结果,这便是这篇博文的主题。...• p(θ ′)的值越高,我们接受它的可能性越大。 为了更直观地了解测试的工作原理,我们从Jupyter笔记本中创建了下图,显示了样本的进展情况,以近似于目标后验。...处理这个问题的简单方法是应用相同的测试,但是改用一个b元素的小规模数集 : 图片.png 不幸的是,这不会从正确的目标分布中抽样; 参见Bardenet等人的第6.1节。(2017年)了解细节。...后面的内容与Jupyter笔记本的前一个例子类似,只是生成了一百万个数据点。左边是我们的结果,另外两个是来自Korattikara等人。(2014)和Bardenet等人 (2014年)。

    99070

    30分钟理解决策树的基本原理

    决策树模型的先验形式可以表述成如下: ? 其中q[x]是从特征空间映射到节点编号空间的函数。决策树模型的关键是将特征空间划分成不相交的子区域,落在相同子区域的样本具有相同的预测值。...为了确定一棵决策树的完备结构,要明确如下两个方面:一是如何划分子区域,二是子区域的预测值取多少。 2,目标函数 目标函数即我们用什么标准来评价一个模型的好坏。...目标函数决定了我们从假设空间中选择模型的偏好。 ? 决策树的目标函数可以用来评价一棵决策树的好坏。这个目标函数应当包括两个方面的内容。...由于决策树的同一叶子节点上的所有样本都取相同的预测值,如果这些样本的真实 label 只有一种取值,那么这个叶子节点上的样本是非常“纯净”的,我们可以直接指定预测值为这个叶子节点上 label 的取值,...反之,如果叶子节点上不同样本的 label 的取值很杂乱,所谓众口难调,那么无论我们如何指定叶子节点上的预测值,总会有较大的预测误差。 那么,如何来衡量不纯度呢?

    2.9K11

    AlphaGo Zero用它来调参?【高斯过程】到底有何过人之处?

    机器学习中的大多数现代技术都倾向于通过参数化函数,然后对这些参数(例如线性回归中的权重)进行建模来避免这种情况。 然而,GP是直接对函数建模的非参模型。...这些绝对看起来像多个函数,但相对于我们的目的,它们看起来噪声太大所以不可用。让我们进一步考虑可以从这些样本中得到什么,以及如何改变分布从而获得更好的样本…… 多元高斯有两个参数,即均值和协方差矩阵。...就我们的模型而言,对用于相邻点的随机变量在它们的联合分布(即高斯协方差)下采样时应该具有相似的值。 这些点的协方差被定义为高斯的协方差矩阵。...现在就可以用这两个参数从条件概率分布中采样了。我们将它们与真实函数(虚线)画在一起对比。因为我们用的是高斯过程,它包含有不确定性信息,这种不确定性信息以随机变量的方差形式表示出来。...事实上,任何用到核的函数,我们都可以通过改变核得到一个完全不一样的函数(例如,周期函数)。 核的选择需要人工进行,但参数可以通过最小化损失函数来自动优化。这就是高斯过程回归的内容。

    82030

    数据分析师必看的5大概率分布

    在概率论和统计学中,随机变量是一个随机值的东西,比如“我看到的下一个人的身高”。给定一个随机变量X,我们想要一种描述它的值的方法。更重要的是,我们想要描述该变量获取特定值x的可能性。...连续随机变量 如果你说X =“从我头上随机拔毛的长度(以毫米为单位)”X可以采用哪些可能的值?我们可能都认为负值在这里没有任何意义。...注意两个概率如何加起来为1,因此B的不可能会是其他值。 统一概率分布有两种均匀随机变量:离散变量和连续变量。...在骰子中可以找到离散均匀随机变量的典型情况,其中典型的骰子具有一组值{1,2,3,4,5,6}。连续均匀分布,只取两个值a和b作为参数,并为它们之间的间隔中的每个值分配相同的密度。...数据科学中的指数概率分布这是指数分布随机变量的密度函数: 假设您有一个来自变量的样本,并希望查看它是否可以使用指数分布变量建模。 最佳λ参数可以很容易地估计为采样值平均值的倒数。

    81820
    领券