【发布时间】:2018-03-15 18:23:27
【问题描述】:
我在游戏编程方面需要帮助。
您打开一个箱子并以给定的概率找到一个物品。
物品/机会
A / 10%
乙 / 30%
C / 60%
Random random = new Random();
int x = random.Next(1, 101);
if (x < 11) // Numbers 1..10 ( A -> 10% )
{
do_something1(); d
}
else if (x < 41) // Numbers 11..40 ( B -> 30 % )
{
do_something2();
}
else if (x < 101) // Numbers 41..100 ( C -> 60 % )
{
do_something3();
}
就概率而言,这个例子真的有意义吗? 您还有其他解决方案吗?
提前谢谢你!
【问题讨论】:
-
在我看来是一种合理的方式!
-
在这种情况下
x == 101会发生什么? -
同样的解决方案在stackoverflow.com/questions/1522208/… 获得了 33 个赞,所以你应该做得很好
-
@TimothyGroote not possible 第二个参数是返回的随机数的唯一上界 msdn.microsoft.com/en-us/library/2dx6wyd4(v=vs.110).aspx
-
@fubo 是的,但是在更改分布的边界时,您不应忘记更新此示例中的每个“神奇值”。如果你这样做了,那就是虫子潜入的地方。