【发布时间】:2017-02-15 15:50:21
【问题描述】:
我正在尝试从 MMO 游戏或类似游戏中创建一个随机生成的“福利分配”。
规则如下:
- 一个容器中必须有 5 个,并且只能有 1 个容器和 5 个
- 20个点都要分配
- 积分必须由 RNG 分配(使用随机)
到目前为止,我们所拥有的是:
import random
# Variables
cont = [0, 0, 0, 0, 0]
items = 20
maxNum = 5
# Start our first loop
i = 0
while items != 0:
i = 0
while i < len(cont) - 1:
num1 = random.randint(3, maxNum)
if items < 5:
if cont[i] = 00:
cont[i] += items
items = 0
break
cont[i] = num1
if cont[i] == 5:
maxNum = 4
i += 1
items = items - num1
print(items)
print(cont)
这有时会起作用,但有时它会卡在循环中而无法正常工作。
这段代码可以正确的方式是每次输出时都会打印:
- [5,4,4,4,3]
- [4,4,4,4,4]
- [5,4,3,4,4]
- 等
请帮我解决为什么它有时会卡在循环中!谢谢!
【问题讨论】:
-
你说它“有时”有效。这表明随机语句有时会生成一个导致错误的数字。每次生成时尝试打印“num1”,看看循环是否总是从相同的数字失败。如果您自己没有解决,请将结果编辑到您的答案中。
-
循环“卡住”是什么意思?它会崩溃吗?如果是这样,请发布完整的错误跟踪。
-
@Gloin 我们已经做到了,最终它创建了一个比项目更大的数字并减去更大的数字并导致它进入负数并无限重复。
-
为什么分配 cont[i] = items,然后 cont[i] = num1?第一条语句总是被第二条覆盖
-
我看不出这段代码“有时”是如何工作的。当前的 sn-p 只在每一行上打印 20 而没有结束。
标签: python random containers