根据属性从列表中返回一个随机对象

必需的

这对我来说是一个很奇怪的问题,因为我无法正确地想象我的问题。只是为了让您知道,我并不是真正要求代码,而只是想写一个适当的算法该算法会根据天气发生的概率生成一些天气。

这是我想要实现的目标:

假设我有一个WeatherClass,带有一个名为“概率的参数我想有不同的天气实例,它们有自己的“发生”概率。

enum Probability {
Never = -1,
Low = 0,
Normal = 1,
Always = 2
};

std::vector<WeatherClass> WeatherContainer;

WeatherClass Sunny = WeatherClass();
Sunny.Probability = Probability.Normal;

WeatherClass Rainy = WeatherClass();
Rainy.Probability = Probability.Low;

WeatherClass Cloudy = WeatherClass();
Cloudy.Probability = Probability.Normal;

WeatherContainer.push_back(Sunny);
WeatherContainer.push_back(Rainy);
WeatherContainer.push_back(Cloudy);

现在,我的问题是:根据天气自身发生的概率返回一些天气的最聪明的方法是什么?

我不知道为什么,但我想不通。我的第一个猜测是有某种“运气”变量,并将其与每个元素的概率或类似的东西进行比较。

任何提示或建议都会非常有帮助。

问候,

必需的

卡巴努斯

一般来说,假设您有一个表示概率线性增加的整数序列(从 1 开始,而不是从 0 开始!):

1,2,3,4,5,6...n

标记pn一些特定的整数(你的计划中的天气,比如“6”),以及所有枚举整数的总和Sn,线性概率可以很容易地定义为:

pn/Sn

这当然意味着与“1”相关联的天气可能性最小,而与“n”相关联的天气最有可能。其他方案也是可能的,例如指数 - 只需要正确归一化。另外,如果你忘记了你的数学:

Sn=(1+n)*n/2

现在你需要从这个概率滚动。一种不考虑效率的选择,可以帮助您考虑这一点:

制作一个巨大的集合,其中每个天气(或整数)出现的次数与相关的整数一样。1 出现一次,...,n 出现 n 次。Sn根据定义,此列表具有一定的规模现在使用随机库:

int choice = rand() % Sn; #index between 0 and Sn-1 - chosen probability indicator.

您当然也可以随机化列表以获得额外的随机性。

一个例子:在我们的数组中,我们有probmap={1,2,2,3,3,3}. 如果choice==4,那么probmap[4]==3假设 3 对应于Sunny,那么我们就有了结果!。当然有办法让它变得更好,选择不同的概率函数等,但我认为这是一个好的开始。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从对象列表中获取一个属性的数组?

来自分类Dev

根据第三个列表中的一个随机项,从两个列表之一中选择一个随机项

来自分类Dev

根据对象的最小属性值从Java列表中选择一个对象

来自分类Dev

比较字符串列表和另一个列表中的对象属性

来自分类Dev

根据属性选择列表中的随机元素

来自分类Dev

Lodash从对象列表中删除除一个属性外的所有属性

来自分类Dev

使用jq根据字段从对象列表中过滤出一个对象

来自分类Dev

根据第一个子模型的属性对queryset进行排序,将返回重复的对象。Django,DRF

来自分类Dev

在一个列表中查找具有与另一个对象列表中的属性相匹配的属性的所有对象

来自分类Dev

Python对象返回一个列表

来自分类Dev

根据属性将列表对象从一个列表复制到另一列表

来自分类Dev

pandas:根据另一个列表列中的条件从列表列返回值

来自分类Dev

然后根据枚举搜索在列表中返回一个以上的值

来自分类Dev

根据对象中的一个属性从列表中获取最新的对象

来自分类Dev

根据名称从列表中选择一个对象

来自分类Dev

从列表中随机选择一个对象(图像)

来自分类Dev

根据一个或多个条件从列表中搜索对象

来自分类Dev

根据另一个列表返回列表中项目的索引,python

来自分类Dev

从与另一个属性对应的对象列表中获取属性列表

来自分类Dev

根据另一个值数组过滤对象数组,返回一个空列表

来自分类Dev

如何根据匹配的ID返回一个对象数组?

来自分类Dev

从数组中删除一个随机对象并返回它

来自分类Dev

根据 Django 中另一个查询返回的对象数量进行过滤

来自分类Dev

Mock 根据参数返回一个列表

来自分类Dev

jquery 从对象中选择一个随机属性

来自分类Dev

根据一个属性按字母顺序对数组中的对象进行排序

来自分类Dev

比较两个对象列表并通过比较java 8中两个列表的一个属性形成一个新列表

来自分类Dev

从对象的属性中检索随机值(一个值除外)

来自分类Dev

从列表中删除对象字符串属性不在另一个列表<t> 的属性中的对象

Related 相关文章

  1. 1

    如何从对象列表中获取一个属性的数组?

  2. 2

    根据第三个列表中的一个随机项,从两个列表之一中选择一个随机项

  3. 3

    根据对象的最小属性值从Java列表中选择一个对象

  4. 4

    比较字符串列表和另一个列表中的对象属性

  5. 5

    根据属性选择列表中的随机元素

  6. 6

    Lodash从对象列表中删除除一个属性外的所有属性

  7. 7

    使用jq根据字段从对象列表中过滤出一个对象

  8. 8

    根据第一个子模型的属性对queryset进行排序,将返回重复的对象。Django,DRF

  9. 9

    在一个列表中查找具有与另一个对象列表中的属性相匹配的属性的所有对象

  10. 10

    Python对象返回一个列表

  11. 11

    根据属性将列表对象从一个列表复制到另一列表

  12. 12

    pandas:根据另一个列表列中的条件从列表列返回值

  13. 13

    然后根据枚举搜索在列表中返回一个以上的值

  14. 14

    根据对象中的一个属性从列表中获取最新的对象

  15. 15

    根据名称从列表中选择一个对象

  16. 16

    从列表中随机选择一个对象(图像)

  17. 17

    根据一个或多个条件从列表中搜索对象

  18. 18

    根据另一个列表返回列表中项目的索引,python

  19. 19

    从与另一个属性对应的对象列表中获取属性列表

  20. 20

    根据另一个值数组过滤对象数组,返回一个空列表

  21. 21

    如何根据匹配的ID返回一个对象数组?

  22. 22

    从数组中删除一个随机对象并返回它

  23. 23

    根据 Django 中另一个查询返回的对象数量进行过滤

  24. 24

    Mock 根据参数返回一个列表

  25. 25

    jquery 从对象中选择一个随机属性

  26. 26

    根据一个属性按字母顺序对数组中的对象进行排序

  27. 27

    比较两个对象列表并通过比较java 8中两个列表的一个属性形成一个新列表

  28. 28

    从对象的属性中检索随机值(一个值除外)

  29. 29

    从列表中删除对象字符串属性不在另一个列表<t> 的属性中的对象

热门标签

归档