Flash 概率随机数?

Flash 概率随机数?,flash,random,flash-cs5,actionscript-3,Flash,Random,Flash Cs5,Actionscript 3,所以,我有个问题。基本上,我在高中数学课上没有给予足够的重视,现在我陷入了困境。我需要生成介于1和20之间的随机数,重点放在1和5之间的随机数上,轻放在5-10之间,轻放在10-20之间。我不理解我遇到的文章中所有的花哨的概率词和他们说的所有东西。如果你们能提供任何帮助,我们将不胜感激。谢谢 您可以使用此公式生成[低,高]范围内的随机数: var randomNumber:int = Math.floor(Math.random()*(1+high-low))+low; 如果你愿意,你可以把它

所以,我有个问题。基本上,我在高中数学课上没有给予足够的重视,现在我陷入了困境。我需要生成介于1和20之间的随机数,重点放在1和5之间的随机数上,轻放在5-10之间,轻放在10-20之间。我不理解我遇到的文章中所有的花哨的概率词和他们说的所有东西。如果你们能提供任何帮助,我们将不胜感激。谢谢

您可以使用此公式生成[低,高]范围内的随机数:

var randomNumber:int = Math.floor(Math.random()*(1+high-low))+low;
如果你愿意,你可以把它放在函数中

现在,对于您提供的三个时间间隔,有一个简单的方法可以得到不同的概率,就是这样做:

var random:Number = Math.random();
if (random < 0.75) {
    // generate random number in [1, 5]
} else if (random < 0.95) {
    // generate random number in [6, 10]
} else {
    // generate random number in [11, 20]
}
var random:Number=Math.random();
如果(随机<0.75){
//在[1,5]中生成随机数
}否则如果(随机<0.95){
//在[6,10]中生成随机数
}否则{
//在[11,20]中生成随机数
}

您可以使用此公式生成[低、高]范围内的随机数:

var randomNumber:int = Math.floor(Math.random()*(1+high-low))+low;
如果你愿意,你可以把它放在函数中

现在,对于您提供的三个时间间隔,有一个简单的方法可以得到不同的概率,就是这样做:

var random:Number = Math.random();
if (random < 0.75) {
    // generate random number in [1, 5]
} else if (random < 0.95) {
    // generate random number in [6, 10]
} else {
    // generate random number in [11, 20]
}
var random:Number=Math.random();
如果(随机<0.75){
//在[1,5]中生成随机数
}否则如果(随机<0.95){
//在[6,10]中生成随机数
}否则{
//在[11,20]中生成随机数
}

如果您需要“平滑”的分发,也可以使用下面的内容。即,分布将在最低值和最高值之间逐渐变化,在以下情况下,重点将放在较低的值上

    private function univenlyDistributedRandom(low:int, high:int):Number
    {
        return low + (1 - Math.pow(Math.random(), 4)) * (high - low);           
    }

当然,您可以使用任何其他函数(夸张、正弦等)生成稍微不同的变化。不过有件有趣的事。如果你正在使用任何一种吐温引擎,你可能已经具备了这些功能!任何应用于
Math.random()
输出的非线性缓和函数都会以“平滑”的方式影响分布。因此,例如,如果您看到缓和功能执行类似“它开始变慢,但随后变快,变快,甚至更快”的操作,这意味着您可以使用它实现的分布将偏向于较小的数字,而较大的数字将较少出现。

如果您需要“平滑”分布,您也可以使用下面的内容。即,分布将在最低值和最高值之间逐渐变化,在以下情况下,重点将放在较低的值上

    private function univenlyDistributedRandom(low:int, high:int):Number
    {
        return low + (1 - Math.pow(Math.random(), 4)) * (high - low);           
    }

当然,您可以使用任何其他函数(夸张、正弦等)生成稍微不同的变化。不过有件有趣的事。如果你正在使用任何一种吐温引擎,你可能已经具备了这些功能!任何应用于
Math.random()
输出的非线性缓和函数都会以“平滑”的方式影响分布。因此,例如,如果你看到缓和函数做了类似“它开始变慢,但随后变快,变快,甚至更快”的事情,那就意味着你可以用它实现的分布将偏向于较小的数字,较大的数字出现的频率将降低。

我将使用彭纳方程之一。

生成一个介于0和1之间的数字。 把它交给penner方程,它将返回一个介于0和1之间的数字。 将该数字乘以所需的最大值。 绕过它

number = Math.round(MyTransformFunction(Math.random())*MaxNumber)

function MyTransformFunction(x){
   return x*x;
}
对于0-1之间的输入,任何其他返回0-1之间的数字的函数都可以工作:

return -x*x;
return Math.sqrt(x);

我会用一个彭纳方程。

生成一个介于0和1之间的数字。 把它交给penner方程,它将返回一个介于0和1之间的数字。 将该数字乘以所需的最大值。 绕过它

number = Math.round(MyTransformFunction(Math.random())*MaxNumber)

function MyTransformFunction(x){
   return x*x;
}
对于0-1之间的输入,任何其他返回0-1之间的数字的函数都可以工作:

return -x*x;
return Math.sqrt(x);

在这个主题上有几个问题,所以…实际上,我已经编程5到6年了,我只有一个简单的数学问题。除非你有什么有用的东西要补充,否则评论是不会被欣赏的。@Jack咄咄逼人可能不是最好的方式来得到我对你说了一半的答案。对不起,我通常不会生气,但是侮辱我是没有用的。或者,这都没关系。整数,理想情况下,介于1和20之间。但是我可以(从表面上看,我可能不得不)处理浮动。在这个主题上有几个问题……实际上,我已经编程5到6年了,我只有一个简单的数学问题。除非你有什么有用的东西要补充,否则评论是不会被欣赏的。@Jack咄咄逼人可能不是最好的方式来得到我对你说了一半的答案。对不起,我通常不会生气,但是侮辱我是没有用的。或者,这都没关系。整数,理想情况下,介于1和20之间。但我可以(从表面上看,我可能不得不)处理浮动。