Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python骰子结果计数_Python_Python 3.x_Numpy_Dice - Fatal编程技术网

Python骰子结果计数

Python骰子结果计数,python,python-3.x,numpy,dice,Python,Python 3.x,Numpy,Dice,编写一个函数collect_sims(nsim,N,D,p=0.5,nmax=10000),该函数运行run_sim函数nsim次(使用参数N,D,p),并返回一个长度为nmax的numpy数组,给出模拟在指定的步数下停止的次数。例如,假设nsim为8,连续运行run_sim得到3,4,4,3,6,5,4,4。你可以将其列为“两个3,四个4,一个5,一个6,零个7,零个8…” def collect_sims(nsim, N, D, p=0.5, nmax=10000): run_sim

编写一个函数collect_sims(nsim,N,D,p=0.5,nmax=10000),该函数运行run_sim函数nsim次(使用参数N,D,p),并返回一个长度为nmax的numpy数组,给出模拟在指定的步数下停止的次数。例如,假设nsim为8,连续运行run_sim得到3,4,4,3,6,5,4,4。你可以将其列为“两个3,四个4,一个5,一个6,零个7,零个8…”

def collect_sims(nsim, N, D, p=0.5, nmax=10000):
    run_sim(N=20, D=6, p=0.5, itmax=5000)
    onecount = 0
    twocount = 0
    threecount = 0
    fourcount = 0
    fivecount = 0
    sixcount = 0
    for k in range (n):
        if D == 1:
            onecount += 1
        if D == 2:
            twocount += 1
        if D == 3:
            threecount += 1
        if D == 4:
            fourcount += 1
        if D == 5:
            fivecount += 1
        if D == 6:
            sixcount += 1

return(k)

print(onecount, "1",twocount,"2",threecount,"3",fourcount,"4",fivecount,"5",sixcount,"6")

它说我的6个变量onecount、twocount等没有定义,我如何定义它们?另外,我可以做些什么来修复代码?

缩进for循环:在您发布的代码中,它回到了原始缩进级别(对于for语句,无缩进)。这就结束了你的函数,循环在主程序中。您的变量尚未定义(因为它们与函数中的变量不同),并且您的返回值是非法的

也许试试这个

def collect_sims(nsim, N, D, p=0.5, nmax=10000):
    run_sim(N=20, D=6, p=0.5, itmax=5000)
    onecount = 0
    twocount = 0
    threecount = 0
    fourcount = 0
    fivecount = 0
    sixcount = 0
    for k in range (n):
        if D == 1:
            onecount += 1
        if D == 2:
            twocount += 1
        if D == 3:
            threecount += 1
        if D == 4:
            fourcount += 1
        if D == 5:
            fivecount += 1
        if D == 6:
            sixcount += 1

    print(onecount, "1",twocount,"2",threecount,"3",fourcount,"4",fivecount,"5",sixcount,"6")

collect_sims()
我无法测试,因为您没有提供足够的代码。另外,请注意,我只是将print语句作为调试跟踪留在原地。您必须返回一个数组,但尚未尝试返回。您的原始代码返回了k,必须是n+1。这对调用程序没有用处


进一步帮助


学习使用6个元素的列表进行计数,而不是使用6个单独的变量。更妙的是,将所有模具辊放入一个列表中,只需使用计数功能来确定每个模具辊的数量。

我不知道您为什么返回k

不管怎样,问题是oncount,twocount。。。etc在不同的打印范围内。可以将print()放在函数中,也可以返回包含计数的元组

有些人喜欢这样:

def collect_sims(nsim, N, D, p=0.5, nmax=10000):
    run_sim(N=20, D=6, p=0.5, itmax=5000)
    onecount = 0
    twocount = 0
    threecount = 0
    fourcount = 0
    fivecount = 0
    sixcount = 0
for k in range (n):
    if D == 1:
       onecount += 1
    if D == 2:
       twocount += 1
    if D == 3:
       threecount += 1
    if D == 4:
       fourcount += 1
    if D == 5:
       fivecount += 1
    if D == 6:
       sixcount += 1

return(onecount, twocount, threecount, fourcount,fivecount,sixcount)

onecount, twocount, threecount, fourcount,fivecount,sixcount = collect_sims (...)

print(onecount, "1",twocount,"2",threecount,"3",fourcount,"4",fivecount,"5",sixcount,"6")
不同的解决方案

也许其他解决方案可以帮助您: