Math Don';我不理解在两个值之间获取随机数的代码

Math Don';我不理解在两个值之间获取随机数的代码,math,random,logic,Math,Random,Logic,所以,我理解这似乎是一个愚蠢的问题。尽管如此,在我的课堂上,我关注的是教授正确的代码。这是我偶然发现的Min+(Math.random()*((Max-Min)+1))从本质上讲,代码是这样的。将最小值+一个介于0.0和1.0之间的随机数乘以最大值减去最小值加1。本书将此代码视为在某些参数内检索随机值的基础。i、 e最大值=40最小值=20。这将得到一个介于40和20之间的值 问题是,我知道代码在说什么和做什么。我用它来生成一个随机字符,在前面加上(char)并使用'a'和'z'作为值。但问题是

所以,我理解这似乎是一个愚蠢的问题。尽管如此,在我的课堂上,我关注的是教授正确的代码。这是我偶然发现的
Min+(Math.random()*((Max-Min)+1))
从本质上讲,代码是这样的。将最小值+一个介于0.0和1.0之间的随机数乘以最大值减去最小值加1。本书将此代码视为在某些参数内检索随机值的基础。i、 e最大值=40最小值=20。这将得到一个介于40和20之间的值

问题是,我知道代码在说什么和做什么。我用它来生成一个随机字符,在前面加上(char)并使用'a'和'z'作为值。但问题是,从数学上讲,我不明白这是怎么回事。我知道这让我成为一个相当差劲的程序员。我从来没有声称自己是伟大的或才华横溢的。我知道代数和一些基本的高等数学概念,但有些愚蠢的基本公式让我摸不着头脑


就编程逻辑而言,这对我来说不是什么问题,但看到这样的概念。我很困惑。我不懂这个代码的数学逻辑。我遗漏了什么吗?我的意思是,当一个数学随机值在0.0和1.0之间时,我看不出它是如何得到一个介于最小值和最大值之间的值的。有谁愿意给我一个外行的解释来解释这是如何工作的吗?

想象一下,橡胶纤维横跨在点0和点1(线段)之间。
在其上洒上一些染料-您已经在0..1的间隔上生成了随机值。
现在固定左侧点并拉伸此光纤,直到其长度变为
Max-Min

现在将其向右移动
Min

您可以在间隔
Min..Max


通常,这是一个区间(
0..1
)到另一个区间(
Min..Max
)的线性变换。请注意,初始间隔可能是任意的。

想象橡胶纤维在点0和点1(线段)之间跨越。
在其上洒上一些染料-您已经在0..1的间隔上生成了随机值。
现在固定左侧点并拉伸此光纤,直到其长度变为
Max-Min

现在将其向右移动
Min

您可以在间隔
Min..Max


通常,这是一个区间(
0..1
)到另一个区间(
Min..Max
)的线性变换。请注意,初始间隔可能是任意的。

称为线性插值,有时甚至称为线性外推,这取决于您是放大还是缩小动态范围。无论如何,动态范围变化背后的理念是:

让我们:

x=//输入范围
我们想把它们改成

y=//输出范围
让我一步一步地推导:

//方程范围运算
y=x/-x0
y=x-x0/<0,x1-x0>/(x1-x0)
y=(x-x0)/(x1-x0)/<0,1>*(y1-y0)
y=(y1-y0)(x-x0)/(x1-x0)/<0,y1-y0>+y0
y=y0+(y1-y0)(x-x0)/(x1-x0)/
现在我怀疑
x=Math().random()
返回值
x=
,我们希望得到
=
的结果,然后:

y=min+(max-min)(x-0)/(1-0)
y=min+(max-min)*x

产生
范围的
+1
,或者如果
随机()称为线性插值,有时甚至称为线性外推,这取决于您是放大还是缩小动态范围。无论如何,动态范围变化背后的理念是:

让我们:

x=//输入范围
我们想把它们改成

y=//输出范围
让我一步一步地推导:

//方程范围运算
y=x/-x0
y=x-x0/<0,x1-x0>/(x1-x0)
y=(x-x0)/(x1-x0)/<0,1>*(y1-y0)
y=(y1-y0)(x-x0)/(x1-x0)/<0,y1-y0>+y0
y=y0+(y1-y0)(x-x0)/(x1-x0)/
现在我怀疑
x=Math().random()
返回值
x=
,我们希望得到
=
的结果,然后:

y=min+(max-min)(x-0)/(1-0)
y=min+(max-min)*x

+1
产生了
范围,或者如果您的
随机()谢谢,您的解释有助于解释函数。很高兴知道它真的有一个名字。谢谢你,你的解释对解释函数很有帮助。很高兴知道它真的有个名字。
x(t) = x0 + (x1-x0)*t