Python:随机种子问题

Tim*_* S. 1 python random

我知道任何一台计算机上的随机数并不是真正随机的,但我希望我的变化比我目前得到的更多.我正在尝试模拟骰子卷,例如4d6将是4卷6面模具.这比简单地生成4到24之间的随机数要准确得多(我不会在这里进入概率曲线.)

我所发现的是,播种当前的系统时间(我总觉得它和任何种子一样好,可能是错的)是数字一直很低.我的意思是在大约50卷3d6之后,我从来没有得到超过12的总和.这是该范围的前1/3的0命中率,我认为这特别奇怪.

这里有一些代码,希望有人知道更好的方法来做到这一点,也许从系统时间播种本质上是坏的,我只是不知道:(我省略了不相关的类定义)

from random import randrange, seed

def dieroll(self,numrolls,dierange):
    """ This method will return 'num' rolls of a d'range' die. 
    For example, 4d6 will simulate four rolls of a 6-sided die. """

    seed()
    sum = 0
    for roll in range(0, numrolls):
        dieroll = randrange(1,dierange)
        sum = sum + dieroll
    print("Sum = %d" % sum)
Run Code Online (Sandbox Code Playgroud)

以下是我的结果的一小部分示例:

>>> c.dieroll(3,6) 
Sum = 3 
>>> c.dieroll(3,6) 
Sum = 11 
>>> c.dieroll(3,6) 
Sum = 9 
>>> c.dieroll(3,6) 
Sum = 9 
>>> c.dieroll(3,6) 
Sum = 10 
>>> c.dieroll(3,6) 
Sum = 11 
>>> c.dieroll(3,6) 
Sum = 7 
>>> c.dieroll(3,6) 
Sum = 7 
>>> c.dieroll(3,6) 
Sum = 11 
>>> c.dieroll(3,6) 
Sum = 11 
>>> c.dieroll(3,6) 
Sum = 4 
>>> c.dieroll(3,6) 
Sum = 11 
>>> c.dieroll(3,6) 
Sum = 6 
>>> c.dieroll(3,6) 
Sum = 12 
>>> c.dieroll(3,6) 
Sum = 6 
>>> c.dieroll(3,6) 
Sum = 8 
>>> c.dieroll(3,6) 
Sum = 8 
Run Code Online (Sandbox Code Playgroud)

我期待一个价值的钟形曲线,虽然这个小样本集(我不打算发布整个50个结果)但我的整体结果偏低.

感谢您对此的任何帮助 - 我希望这些结果尽可能像"真正的骰子"一样逼真!

编辑:经过大约20次滚动后,我确实得到了13和14,所以我知道这是可能的.不过,我有大约10岁以下的人.

第2次编辑:我刚刚意识到dierange应该是dierange + 1 - 1d6始终从1-5返回结果...仍然不确定种子是否尽可能准确.

DSM*_*DSM 5

randrange,比如range,不包括其上限.

你的骰子没有6 ..

比较randint,这包括上限.