2016-11-20 45 views
0

我想写需要我发生器产生一个随机数的程序。随机数更喜欢范围

我还需要使它所以有一个变量机会挑选一组范围。

在这种情况下,我会1-10之间产生,并与%的机会的范围是7-10。

我该怎么做?我可以提供一个公式或类似的东西吗?

+1

你正在使用哪种编程语言? Python有随机库,你可以在你的问题的第一部分使用random.randint(1,10)。当你说“百分比机会的范围是7-10”时,你是什么意思? –

+0

你可以展示你到目前为止尝试过什么吗?你还用什么语言? –

+0

你会说清楚吗? –

回答

1

所以,如果我理解你的问题,你希望两个号码范围,那一个范围将被选择的变量定义的概率。这可以在数学上描述为概率密度函数(PDF),在这种情况下,它也将把“机会”变量作为参数。如果,例如,您的7-10范围更可能比1-10范围的其余部分,你的PDF可能看起来像:

Sample Probability Density Function

一个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 
+0

我想我应该使range_chance变量大于50,因为在你的例子中,范围是“首选”。但你明白了。 –