我需要编写一个函数来随机返回其中一个数字(-2,-1,0,1,2),但我需要输出的平均值是一个特定的数字(比如1.2)。
我看到了
相似
问题
,但所有的答案似乎都依赖于目标范围足够宽。
有没有一种方法可以做到这一点(不保存状态),用这个小的可能的输出选择?
更新
:我想使用这个函数进行(随机化)测试,作为我不想运行的昂贵函数的存根。这个函数的使用者会运行它几百次,并取平均值。我一直在使用一个简单的randint函数,但平均值总是非常接近0,这是不现实的。
重点是,我只需要一些简单的东西,不会总是平均为0。我真的不关心实际的平均值是多少。我可能问错了问题。
发布于 2013-07-18 21:57:41
您是否真的想要求该特定值是
平均值
,或者更确切地说是
期望值
什么?换句话说,如果生成的序列在其初始部分包含非常多的小值,那么序列的其余部分是否应该尝试补偿这一点,以试图获得正确的总体平均值?我假设不是,我假设您希望所有样本都独立计算(毕竟,您说过您不想要任何状态),在这种情况下,您只能控制期望值。
如果你指定一个概率
圆周率
对于每个可能的选择,期望值将是这些值的总和,按其概率加权:
EV =−2
P
−2−
P
−1 + _p_1 + 2_p_2 = 1.2
作为附加约束,您必须要求这些概率中的每一个都是非负的,并且上述四个概率加起来的值小于1,其余的由第五个概率_p_0取。
有许多可能的任务可以满足这些要求,任何一个都会按照你的要求做。它们中的哪一个对于您的应用程序来说是合理的,取决于该应用程序所做的事情。
您可以使用PRNG生成在[0,1)范围内均匀分布的变量,然后通过将概率的累积和作为切入点将这些变量映射到您所描述的情况。
https://stackoverflow.com/questions/17723663
复制相似问题