如何制作随机选择真正随机的(我在秘密模块中找不到)

2024-09-29 05:25:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想对一个叫做Martingala的策略做一个统计研究。现在我想练习很多次,把结果添加到列表中。问题是,尽管是随机的,但它总是返回相同的结果。我怀疑这是因为随机模块不是真正随机的。我该怎么解决?你知道吗

非常感谢。你知道吗

import random
print("ANÁLISIS ESTADÍSTICO DE LA MARTINGALA")
print()
print("La apuesta mínima es 1€")
dinero = int(input("Con cuanto dinero empiezas? "))
muestra = int(input("Tamaño de la muestra: "))
dinero_apostado=1
tiradas=0
datos=list()
while muestra>0:
    while dinero >= dinero_apostado:
        casilla=random.choices([0,1,2],[1,18,18])
        casilla=casilla.pop()
        if casilla == 1:
            dinero = dinero + dinero_apostado
            dinero_apostado = 1
        elif casilla != 1:
            dinero = dinero - dinero_apostado
            dinero_apostado = dinero_apostado * 2
        tiradas+=1
    datos.append(tiradas)
    muestra-=1
print(datos)

Tags: 模块列表inputrandom策略intprintwhile
1条回答
网友
1楼 · 发布于 2024-09-29 05:25:48

您当前的代码不断重复相同的结果,因为在算法的两次尝试之间没有重置任何变量。一旦内部while循环的条件变为False,对于外部循环的每次迭代,它将保持False。所以主算法实际上不会运行几次。它运行一次,然后代码只会重复运行一次的结果。使用不同的随机数生成器也没用。你知道吗

尝试在外循环中移动一些变量初始化。你可能需要一个额外的变量来计算你开始的钱的数量(因为dinero随着游戏的进行而改变)。可能是这样的:

dinero_inicial = int(input("Con cuanto dinero empiezas? ")) # new variable used here
muestra = int(input("Tamaño de la muestra: "))
datos=list()
while muestra>0:
    dinero = dinero_inicial         # move some other initializations inside the outer loop
    dinero_apostado = 1
    tiradas = 0
    while dinero >= dinero_apostado:
        casilla=random.choices([0,1,2],[1,18,18])
        casilla=casilla.pop()
        if casilla == 1:
            dinero = dinero + dinero_apostado
            dinero_apostado = 1
        elif casilla != 1:
            dinero = dinero - dinero_apostado
            dinero_apostado = dinero_apostado * 2
        tiradas+=1
    datos.append(tiradas)
    muestra-=1
print(datos)

相关问题 更多 >