如何根据一定概率获得值
-
01-10-2019 - |
题
我有一些功能会产生双重,浮点,短,长随机值。我有另一个通过数据类型的功能,并且应该返回随机值。现在,我需要根据传递的数据类型在该函数中选择返回值。例如,如果我经过浮动,我需要:
回报为浮点的概率为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 ::变体,联合或转换为最有能力的类型(可能是双重)或字符串表示。
不隶属于 StackOverflow