嗨,我已经重新搜索,我相信当我结束这个线程时,我的方向是正确的:
http://code.activestate.com/recipes/117241/
基本上我的问题是:链接中的代码逐行执行。如果您的解释使我能够满意地理解链接中的代码的作用,您可能会忽略我在下面写的所有内容。
我相信该链接上的代码会生成一个随机数,但随机数与概率直接相关。
在我自己的代码中,我试图获取一个“数字”及其出现的概率,并得到一个输出“数字”,它将根据概率出现。我知道这很令人困惑,但是如果您查看上面的链接,那么我希望很清楚我要做什么。我下面的代码参考了上面的链接。
所以在我的程序中,这些是我的全局变量:
HIGH= 3
MED= 2
LOW= 1
这是我正在使用的列表:
n= [LOW,lowAttackProb).(MED,medAttackProb),(HIGH,highAttackProb)]
#lowAttackProb,med...,etc. are based on user input are just percents converted to decimals that add up to 1 in every case
这就是我按照上面的链接实现随机代码的方式:
x= random.uniform(0,1)
for alevel,probability in n:
if x<probability:
break
x=x-probability
return alevel
我不确定 for 循环中到底发生了什么以及 x=x-probability 正在做什么。
假设 x=0.90
并且在我的列表中,第二个列表条目出现的机会是 0.60,然后,由于 x(小于)概率是 False(我不太确定如果 x(小于)概率甚至会怎样),代码会移动到 n=n 概率。
我真的希望这是有道理的。如果没有,请让我知道有什么不清楚的地方,我会尽力修复它。感谢您的任何帮助。