Pick a random item from a list based on the distance from a point?
===

I am writing a game server in Python with the help of Twisted. I have a Map class which generates the map for the game. In my game I have a central point, with rings of items every certain distance outward. I want to randomize the items but also weight items so that they are more common toward the outside of the map. Currently this is my code for building the map, with some variable and function names changed:

    def generate():
        centralItem = Item(ITEM_TYPE_GOLD, 0, 0, ITEM_SIZE_GIANT, None)
        self.items.append(centralItem)
        distance = 10000
        numberOfRings = 100
        for ring in range(numberOfRings):
            itemsInRing = (ring + 1) * 100
            distanceToRing = (ring + 1) * distance
            for item in range(itemsInRing):
                angle = math.radians(float(360) / itemsInRing) * item
                xPos = math.cos(angle) * distanceToRing
                yPos = math.sin(angle) * distanceToRing
                # set variable itemSize using method described above (details below)
                # set variable itemType using method described above (details below)

I also have this class with an initializer for creating items.

    class Item:

    def __init__(self, type, posX, posY, size, owner):
        self.type = type
        self.posX = float(posX)
        self.posY = float(posY)
        self.size = size
        self.owner = owner

These are my definitions.

    ITEM_TYPE_FIRE = 0
    ITEM_TYPE_ICE = 1
    ITEM_TYPE_WIND = 2
    ITEM_TYPE_EARTH = 3
    ITEM_TYPE_GOLD = 4

    ITEM_SIZE_SMALL = 200
    ITEM_SIZE_MEDIUM = 350
    ITEM_SIZE_LARGE = 500
    ITEM_SIZE_GIANT = 1000

Based on distanceToRing in the generate method, I want to make, for example, ITEM_SIZE_SMALL be most common when the distanceToRing is 1,000,000 and least common when distanceToRing is 10,000. I also want ITEM_SIZE_LARGE to be the opposite of that and ITEM_SIZE_MEDIUM to be more common in the middle. As for the item types, I need ITEM_TYPE_FIRE and ITEM_TYPE_ICE to be most common toward 1,000,000. ITEM_TYPE_WIND and ITEM_TYPE_EARTH should be more common toward 10,000.

I know that is a lot to ask, but if you can present a way of handling distribution like this and explain it I think that I can figure it out. Also, I apologize in advance for my lack of skill with Python. I haven't been using it for long enough to understand best practices and even some basics.

Thanks for your time,
Brian