偏好范围的随机数

Random number that prefers a range

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

我还需要做到这一点,所以有不同的机会选择一个设定范围。

在这种情况下,我会在 1-10 之间生成,概率范围是 7-10。

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

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

可以通过转换函数将一个 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