Algorithm 如何编程函数以某种概率返回值?
这个问题是在我参加国际足联比赛时产生的 因此,他们编写了一个复杂的函数,其中包括射击技能、距离、射击功率等所有因素,以计算射击命中目标的概率。他们是如何根据这种可能性来编程实现目标的 换句话说,像函数X()一样,它返回189%和011%的概率。如何编程,使其在100次试验中返回1(大约)89次?在Algorithm 如何编程函数以某种概率返回值?,algorithm,language-agnostic,probability,Algorithm,Language Agnostic,Probability,这个问题是在我参加国际足联比赛时产生的 因此,他们编写了一个复杂的函数,其中包括射击技能、距离、射击功率等所有因素,以计算射击命中目标的概率。他们是如何根据这种可能性来编程实现目标的 换句话说,像函数X()一样,它返回189%和011%的概率。如何编程,使其在100次试验中返回1(大约)89次?在0和1之间生成一个随机数,如果该数字小于所需的概率(0.89),则返回true) 例如,在: [13]中的from random import random 在[14]中:VAL=[random()
0
和1
之间生成一个随机数,如果该数字小于所需的概率(0.89
),则返回true
)
例如,在:
[13]中的from random import random
在[14]中:VAL=[random()<0.89,对于范围(10000)内的i)
In[15]:总和(VAL)
Out[15]:8956
在这种情况下,10000个布尔结果中有8956个是
true
。如果我们重复这个实验,这个数字将在8900左右变化。我不是100%确定,但我有一个方法可以实现:
生成一个随机数(0到100之间)。如果数字是89或大于返回1,则返回0。如果您有一个随机数生成器,则您可以执行以下操作:
bool return_true_89_out_of_100() {
double random_n = rand(); // returns random between 0 and 89
return (random_n < 0.89);
}
bool return\u true\u 89\u out\u of\u 100(){
double random_n=rand();//返回0到89之间的随机值
回报率(随机<0.89);
}
您可以通过对CPU时钟的低位进行采样或一些数学技巧来生成粗略的随机数。您被标记为语言不可知论者,但答案取决于您可用的随机数函数。此外,准确度可能取决于你的生成器离真正的随机性有多近(通常它们没有那么近)
至于随机数函数,通常有两种——一种生成0到1之间的数,另一种生成m到n之间的数。每个都可以很容易地得出一个百分比。这是而不是在国际足联或其他视频游戏中如何确定目标。它们没有一个函数,这个函数表示,有一定的概率,射击成功或失败 相反,他们模拟一个球被踢进球门 球会有一些速度(基于“射门能力”)和一些轨迹角度(基于球员瞄准的位置,以及一些基于角色“射门技能”的变化)。然后他们允许物理-和守门员的人工智能,如果有-接管,并计算为一个点,只有当球物理进入目标
当然仍然存在随机性,但是没有一个单一的变量决定一次射击是否成功。谢谢。我在考虑随机数和模运算符。我只是觉得事情会这么简单。:)+1提到随机数必须均匀分布。