Math 如何将这个概念表述为一个等式

Math 如何将这个概念表述为一个等式,math,random,equation,Math,Random,Equation,我有这个(伪代码): 我希望有更大的概率选择较低的数字,就像图片所描述的。方程式(代码)应该是什么样子?这里最简单的方法是继续进行拒绝采样 基本上模拟一个二维变量(x,y)=(Math.random(),Math.random())。它是正方形[0,1][0,1]中的一个点。如果变量(x,y)位于您绘制的三角形中,则取x x将有您正在寻找的发行版 伪代码: var a = Math.random(); // returns random number from 0 to 1 x = Math

我有这个(伪代码):


我希望有更大的概率选择较低的数字,就像图片所描述的。方程式(代码)应该是什么样子?

这里最简单的方法是继续进行拒绝采样

基本上模拟一个二维变量(x,y)=(Math.random(),Math.random())。它是正方形[0,1][0,1]中的一个点。如果变量(x,y)位于您绘制的三角形中,则取x

x将有您正在寻找的发行版

伪代码:

var a = Math.random(); // returns random number from 0 to 1
x = Math.random();
y = Math.random();

if x+y < 1:
   return x;
x=Math.random();
y=数学随机();
如果x+y<1:
返回x;

实际上,你可以通过只画一个随机变量(通过计算和反转累积分布函数)来解决这个问题,但在这种情况下要复杂得多。

这里最简单的方法是继续进行拒绝采样

基本上模拟一个二维变量(x,y)=(Math.random(),Math.random())。它是正方形[0,1][0,1]中的一个点。如果变量(x,y)位于您绘制的三角形中,则取x

x将有您正在寻找的发行版

伪代码:

var a = Math.random(); // returns random number from 0 to 1
x = Math.random();
y = Math.random();

if x+y < 1:
   return x;
x=Math.random();
y=数学随机();
如果x+y<1:
返回x;

实际上,你可以只画一个随机变量(通过计算和反转累积分布函数)来解决这个问题,但在这种情况下,这要复杂得多。

反转的累积分布函数给出

1 - Math.sqrt(1 - Math.random()),
所以

会给你你想要的分配


请注意,0处的概率密度必须为2,因此曲线下的面积给出的总概率为1。

反向累积分布函数给出

1 - Math.sqrt(1 - Math.random()),
所以

会给你你想要的分配


请注意,0处的概率密度必须为2,因此曲线下的面积给出的总概率为1。

非常感谢!我考虑了这个问题,想出了更简单的方法——var a=1-Math.sqrt(Math.random());这不是线性关系,但我认为它在我的情况下会起作用:)。谢谢你的帮助,我从你的回答中学到了一些东西。事实上,反转cdf比我最初想象的要容易:)这可能是在这里做的最好的事情…非常感谢!我考虑了这个问题,想出了更简单的方法——var a=1-Math.sqrt(Math.random());这不是线性关系,但我认为它在我的情况下会起作用:)。谢谢你的帮助,我从你的回答中学到了一些东西。事实上,反转cdf比我最初想象的要容易:)这可能是在这里做的最好的事情。。。