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

绿三角

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

因此您的赌注将变为$ 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)了1000次,只是为了看看这个投注系统有多有效。

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

只是为了测试,我删除了递归调用line flip(bet*2)相反,我只是进行了1,000次常规下注。并以您期望的方式运行,每次都有不同的结果。

那么这是怎么回事?

m

从逻辑上看,它似乎会递归下注直到您获胜。这样看来您的余额每次都会增加10,因此是“ 1010、1020、1030、1040、1050”。

如果在行puts $balance之前放置a ,则flip(bet*2)可以看到余额在上升和下降。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么http.HandlerFunc总是返回相同的随机数

为什么函数在递归随机数中返回None?

为什么随机数的递归功能停止?

函数中的随机整数总是返回相同的数字-为什么?

为什么要重复相同的随机数?

为什么即使种子相同,生成的随机数也不同?

为什么我的随机列表中的值总是相同?

为什么这个函数返回 0 而不是随机数

为什么我的随机数不更新?

为什么我会得到重复的随机数?

为什么我的结果中会出现随机数?

为什么使用函数生成随机数会导致较慢的快速排序?

当我多次运行程序(在C中)时,它总是选择相同的随机数

我的随机数生成器总是得到相同的数字?(C++)

为什么我的函数总是返回相同的值?

为什么Rand()总是生成具有固定唯一组计数的随机数?

如果应用相同的种子,为什么Erlang会生成相同的随机数序列?

为什么此随机数计数器的递归速度比过滤器慢

C ++:为什么此方法每次都返回相同的随机数?

我的随机数生成器函数生成相同的数字

为什么“if”函数总是输出相同的结果

为什么每次运行程序时math / rand软件包中的rand.Intn()函数都会生成相同的随机数序列?

使用函数和随机数

为什么我的随机函数不总是有效?

为什么我的C#Random不创建任何随机数?

为什么我不能生成超过6551个随机数

为什么我的随机数生成器返回负值

c malloc,为什么我的数组中有随机数?

为什么我的C代码仅生成每三个随机数?