0

我正在尝试模拟赌博游戏“Crash”的一个非常简单的版本,其中有一个数字每秒都在增加,它也是你的积分的乘数。因此,如果您投入 50 个学分,乘数变为 3.30,您将获得 50*3.30=165 个学分。该号码随机崩溃,如果您没有提取资金,您将失去它们。

from random import randrange, randint

crash_max_range = 50
crash_min_range = 0

multiplier_crash = list(range(crash_min_range, crash_max_range))
multiplier_crash = [float(i) for i in multiplier_crash]
print(*multiplier_crash, sep="\n")

我正在努力解决的主要问题是打印浮动列表,它应该看起来像

0
0.01
0.02
0.03

等等..(每个数字都在一个新的行上)我也不知道如何增加它在低范围内崩溃的几率为 70%,因为显然玩家不可能总是赢。你能帮我解决这个问题吗?

4

2 回答 2

0

对于模拟,您通常会使用一次执行一个步骤的循环。我建议在随机条件下使用无限循环和 break 语句。

在这个循环中,您只需要在每次打印中打印一个值。您应该对任何新代码使用str.format()方法。

代码可能如下所示:

import random

multiplier = 1.00
while True:
    print('{:.2f}'.format(multiplier))
    if random.random() < 0.1:
        break
    multiplier += 0.01
print('CRASH')

上面的例子并不完美,因为长时间运行时浮点错误会累积。使用整数并将其缩放以输出可能会更好。

使用itertools你可以这样做。

import itertools
import random

for i in itertools.count(100):
    multiplier = float(i) / 100.0
    print('{:.2f}'.format(multiplier))
    if random.random() < 0.1:
       break
print('CRASH')

这可以使用生成器表达式进一步简化。但是,当您刚开始使用 pyhton 时,代码可能不太清楚。

import itertools
import random

for multiplier in (float(i) / 100.0 for i in itertools.count(100)):
    print('{:.2f}'.format(multiplier))
    if random.random() < 0.1:
       break
print('CRASH')
于 2018-04-26T18:53:06.760 回答
0

我不清楚崩溃的故事,但是如果您希望浮动列表以 .01 的增量打印,那么您可以做的一件事是像这样更改这两行:

multiplier_crash = list(range(crash_min_range, crash_max_range * 100))
multiplier_crash = [float(i) / 100 for i in multiplier_crash]

这会将最初的 0 打印为 0.0,但是……如果您希望像 0 和 1 等数字这样打印而没有尾随 .0,如您的示例中那样,您可以这样做的一种方法是替换上面的第二行像这样:

multiplier_crash = ["{:,g}".format(float(i) / 100) for i in multiplier_crash]
于 2018-04-26T18:40:45.047 回答