【发布时间】:2019-09-13 14:46:14
【问题描述】:
运动背景
该练习包括生成一个 2D 地图,用户给定该地图的 x,y 大小,然后将表格中的随机项目放置在地图的每个单元格上。 我在 Items 矩阵的 [x, y] 坐标中有一个单元格,我必须为该矩阵的每个单元格随机挑选项目。
我的问题
我必须从一个包含 4 个项目的表中选择随机项目,这些项目的概率以累积概率显示,并且包含此类项目的单元格可以有多个项目以及这些项目的不同组合。
我真的不知道如何解决这个问题,考虑到有 2 个项目在给定的作业桌上有相同的概率。
这是给出的概率表:
Food - 1
Weapons - 0.5
Enemy - 0.5
Trap - 0.3
我的项目枚举:
[Flags]
enum Items
{
Food = 1<<0,
Weapon = 1<<1,
Enemy = 1<<2,
Trap = 1<<3
}
同样,预期的输出是通过这个百分比随机选择 1 个单元格有哪些项目。我想要的答案只是一个开始或解决这个问题的方法,我仍然想自己尝试做,如果可以的话,避免使用完整的代码解决方案。
【问题讨论】:
-
在 0 和 2.3 之间选择一个随机数,然后使用累积概率:食物 - 1 武器 - 1.5 敌人 - 2.0 陷阱 - 2.3 所以武器会在 1 和 1.5 之间
-
您能否进一步解释您所说的“具有此类项目的单元格可以有多个项目以及这些项目的不同组合”是什么意思?
-
@Megadardery 我的意思是我解释的矩阵的每个元素都可以在其中随机选择一个以上的项目,因此您可以使用食物+敌人或武器+陷阱的组合.
-
如果是这种情况,那么这些不是选择替代品的累积概率,它们可能是选择每个项目的个体概率。换句话说,每个细胞都应该有食物,一半的细胞应该有武器,一半的细胞应该有敌人,平均30%的细胞应该有陷阱。如果是这样,那么您接受的答案将是错误的,因为它仅在每个单元格中选择一项。
标签: c# math random probability