擅长:python、mysql、java
<p>因为您实际上是在对骰子列表进行排序,所以最好使用python的sort函数,它速度很快。在</p>
<p>生成随机数也相对较慢。通过只产生一个数字的所有骰子你可以加速它。在</p>
<p>如果attDice和defDice很小(<;=5),在我的计算机上运行大约5秒,可以进行一百万次掷骰。(使用PyPy,它可以在1s内运行。)</p>
<pre><code>def freqs(attDice, defDice, rolls):
m = min(attDice, defDice)
freq = [0]*(m+1)
for i in range(rolls):
ar = random.randrange(6**attDice)
dr = random.randrange(6**defDice)
ad = [(ar / 6**j) % 6 for j in range(attDice)]
ad.sort(reverse=True)
dd = [(dr / 6**j) % 6 for j in range(defDice)]
dd.sort(reverse=True)
aws = sum(j > k for j, k in zip(ad, dd))
freq[aws] += 1
return freq
</code></pre>
<p>它返回攻击者获胜的频率表。在</p>