Python - 随机模块 - 从2个选项生成随机数

时间:2015-04-25 01:58:01

标签: python

这是一个python文件:

import random

class Man:
    def __init__(self):
        self.list_of_men = []
        self.createBody()

    def createBody:
        xCoord = -1
                while xCoord < 16:
                    yCoord = 0
                    xCoord += 1
                    while yCoord < 17:
                        self.list_of_men.append(Body(xCoord, yCoord, val, self))
class Body:
def __init__(self, menX, menY, value, man_obj):
    self.man_obj = man_obj
    self.menX = xCoord
    self.menY = yCoord
    self.value = val

实际上,我将xCoord和yCoord附加到一个列表中,并且还要为它添加一个0或3的值。循环经过289次而在289次之外,必须随机生成数字0或3也附加到列表中(3只能附加35次)。

*注意:自我附加实际上是下一个类中的man_obj,这样我们就可以在第二个类中使用第一个类的函数。

2 个答案:

答案 0 :(得分:0)

由于我们处理的是少量数据,我们可以初始化一个包含0的289个元素的列表,并随机分散其中的3个元素。然后你可以弹出该列表。该解决方案不能很好地扩展,但它可能满足您的特定需求。

import random

def foo():
    a = [0] * 289

    i = 0
    while i < 35:
        index = random.randint(0, 288)
        if a[index] == 0:
            a[index] = 3
            i += 1

    while a:
        yield a.pop()

这是家庭作业或类似的东西吗?您是否正在尝试解决更具体的更大问题?似乎是一个不寻常的要求。

答案 1 :(得分:0)

  

我将xCoord和yCoord附加到一个列表中,并且还要为它附加一个0或3的值。循环经过289次,而在289次中,必须有一个随机生成的数字是0或3也附加到列表中(3只可以附加35次)。

那么,如果只允许3次追加35次,怎么会有289次迭代呢?

你在谈论这样的事吗?

from random import choice

d = list()
for x in range(289):
    if d.count(3) >= 35:
        d.append(0)
    else:
        d.append(choice([0, 3]))