我有一些函数可以生成双精度、浮点、短、长随机值。我有另一个函数,我将数据类型传递给它,它应该返回一个随机值。现在我需要在该函数中根据传递的数据类型选择返回值。例如,如果我通过浮点数,我需要:
回报为浮动的概率为 70%,回报为双倍、空头或多头的概率各为 10%。我可以调用另一个函数来生成相应的随机值,但是我如何适应最终返回的概率权重?我的代码是 C++。
一些指针表示赞赏。
谢谢。
我有一些函数可以生成双精度、浮点、短、长随机值。我有另一个函数,我将数据类型传递给它,它应该返回一个随机值。现在我需要在该函数中根据传递的数据类型选择返回值。例如,如果我通过浮点数,我需要:
回报为浮动的概率为 70%,回报为双倍、空头或多头的概率各为 10%。我可以调用另一个函数来生成相应的随机值,但是我如何适应最终返回的概率权重?我的代码是 C++。
一些指针表示赞赏。
谢谢。
这可以作为未来参考的替代方案,它可以获得精确值的概率,例如 99.999% 或 0.0001% 要获得概率(实际百分比),请执行以下操作:
//70%
double probability = 0.7;
double result = rand() / RAND_MAX;
if(result < probability)
//do something
我已经使用这种方法创建了非常大的渗透网格,它就像是精确值的魅力。
我不知道我是否正确理解您想要做什么,但如果您只想确保概率为 70-10-10-10,请执行以下操作:
r
在 (1,2,3,4,5,6,7,8,9,10) 中生成一个随机数r <= 7
:浮动r == 8
:短r == 9
:双r == 10
:长我认为您认识并可以使该模式适应任意概率值。
mmonem 有一个很好的概率开关,但返回不同的类型也不是微不足道的。您需要一个可以充分(出于您的目的)对任何值进行编码的单一类型 - 查看 boost::any、boost::variant、union 或转换为最有能力的类型(可能是双精度)或字符串表示。