gpt4 book ai didi

ruby - 为什么我的递归函数总是使用相同的随机数?

转载 作者:数据小太阳 更新时间:2023-10-29 07:30:05 24 4
gpt4 key购买 nike

我正在尝试编写一些模拟 Martingale 投注系统的东西。如果您对此不熟悉,那是“肯定的事!” (不确定)投币游戏的投注系统,您每次输时都将赌注加倍,希望在第一次获胜时赢回所有输掉的钱。

因此您的赌注为 10 美元 -> 输 -> 20 美元 -> 输 -> 40 美元 -> 输 -> 80 美元 -> 赢! -> 10 美元...

很简单吧?我认为逻辑将是:

  1. 有一个起价为 1,000 美元的钱包变量。
  2. 打个赌。
  3. rand(0..1) 掷硬币。 0 表示输,1 表示赢。​​
  4. 如果我赢了,请将赌注存入我的钱包。如果我输了,请从我的钱包中减去赌注,然后再下一个新的赌注,金额是之前的两倍。

我这样写:

def flip(bet)
if rand(0..1) == 0 then
$balance += bet
else
$balance -= bet
flip(bet*2)
end
end

然后我运行 flip(10) 一千次,看看这个投注系统有多有效。

问题是我总是得到完全相同的结果。我将运行该程序十次,前五个结果始终是 1010、1020、1030、1040、1050... 所以出了点问题。但是我真的看不到什么;这个逻辑对我来说似乎很好。

只是为了测试一下,我删除了递归调用,flip(bet*2) 行。相反,我只是进行了 1000 次常规投注。这会按照您的预期运行,每次都会产生不同的结果。

那么这里发生了什么?

最佳答案

从逻辑上看,它似乎会递归下注,直到您赢为止。所以看起来您的余额每次都增加 10,因此出现“1010、1020、1030、1040、1050”。

如果您在 flip(bet*2) 行之前放置一个 puts $balance,您可以看到余额上下波动。

我想这就是投注系统的意义所在。我认为该方法的随机部分没有任何问题。

关于ruby - 为什么我的递归函数总是使用相同的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28478708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com