Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: satunnaisia lukuja

amjh [26.03.2009 17:32:02]

#

Kolme lukua: X-koordinaatti, Y-koordinaatti ja satunnaisesti valittu kaikille koordinaateille yhteinen luku.
Niistä pitäisi saada näennäisesti satunnainen luku.
Mikä olisi sopiva algoritmi?

TsaTsaTsaa [26.03.2009 17:34:08]

#

Niimmitä?

Antti Laaksonen [26.03.2009 17:46:33]

#

Yksi helppo tapa on laskea yhteen luvut kerrottuina sopivilla kertoimilla ja ottaa summasta jakojäännös.

Jos luvut ovat x, y ja s, kaava voisi olla vaikkapa:

(13*x + 17*y + 23*s) mod 10000

Tämä palauttaa luvun väliltä 0–9999. Kertoimet ovat pieniä alkulukuja, joiden valintaan ei ole erityistä syytä. Merkintä mod tarkoittaa jakojäännöstä (C:ssä ja vastaavissa %).

pipo [27.03.2009 01:34:39]

#

def arvonta(self, x, y, n, yhteinenluku=2000):
    x = abs(x) # math.abs()
    y = abs(y)
    Gen1 = yhteinenluku + x
    Gen2 = Gen1 * 2
    Siemen = 2000 + y
    Maksimi = 93    # Maksimin tulee olla niin pieni että
                    # arvonta(2000,2000) sisältää 10 numeroa.
    for i in range(4):
        Siemen *= Gen1
        Siemen += Gen2
        Siemen /= Maksimi

    Siemen = str(Siemen)
    # Palautetaan n määrä numeroita.
    Siemen = Siemen[len(Siemen)-n:len(Siemen)]
    return int(Siemen)

Hyh hyh.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta