随机数更喜欢范围

时间:2016-11-20 00:12:48

标签: random language-agnostic

我正在尝试编写一个程序,要求我生成一个随机数。

我还需要这样做,以便有机会选择一个范围。

在这种情况下,我将在1-10之间生成,并且百分比几率为7-10。

我该怎么做?我可以提供配方或类似的东西吗?

1 个答案:

答案 0 :(得分:1)

因此,如果我理解您的问题,您需要两个数字范围,以及一个范围将被选择的变量定义概率。这可以在数学上被描述为概率密度函数(PDF),在这种情况下也可以将你的机会"变量作为参数。例如,如果您的7-10范围比1-10范围的其余部分更可能,则您的PDF可能如下所示:

Sample Probability Density Function

可以通过变换函数将平面分布等一个PDF转换为另一个PDF,这样您就可以生成均匀随机数并将其转换为自己的密度函数。在这里看到严谨的数学: http://www.stat.cmu.edu/~shyun/probclass16/transformations.pdf

但是既然你正在编写一个程序而不是数学论文,我建议最简单的方法就是生成两个随机数。第一个决定使用哪个范围,第二个产生所选范围内的数字。请记住,如果你的范围重叠(显然是1-10和7-10)那么重叠区域将更有可能,所以你可能想要使你的范围独占,这样你就可以更容易地控制概率。您还没有说过您正在使用的语言,但这是Python中的一个简单示例:

import random

range_chance = 30 #30 percent change of the 7-10 range

if random.uniform(0,100) < range_chance:
  print(random.uniform(7,10))
else:
  print(random.uniform(1,7)) #1-7 so that there is no overlapping region