首先,我不是程序员,所以这个问题的答案对于更有经验的人来说可能是非常明显的。 我一直在用python(2.5)来解决一些概率难题,但是我一直得到的结果与我认为应该的结果相差甚远。所以经过一番试验,我设法找出了导致问题的行为。 似乎孤立了这些奇怪行为的脚本是:
import random
random.seed()
reps = 1000000
sub = [0]*10
hits = 0
first = random.randint(0,9)
while True:
second = random.randint(0,9)
if second != first:
break
sub[first] = 1
sub[second] = 1
sub[random.randint(0,9)] = 1
for i in range(1,reps):
first = random.randint(0,9)
while True:
second = random.randint(0,9)
if second != first:
break
if ((sub[first]) or (sub[second])):
hits = hits + 1
print "result: ", hits*1.0/reps*100.0
现在,这不是我最初想要解决的问题,这个脚本的结果应该是34/90或大约37.7,这是足够简单的组合数学。有时候,脚本确实给出了这个结果,但是更多时候它给出了53.4,这似乎没有意义。 这几乎只是一个无聊的好奇,为什么这个脚本的行为和它一样。在
顺便说一句,为了“生成包含在0和9之间的3个不同的随机分布整数”的最佳方法,我衷心推荐
a, b, c = random.sample(xrange(10), 3)
[[s/xrange/range/in python3.0]],而不是使用的while
循环。在结果取决于第13行是否:
命中与第11行或第12行之一相同的索引:
^{pr2}$您可以保护}中的一个相同。在
second
与first
相同,但不能保护第三个条目与first
或{相关问题 更多 >
编程相关推荐