Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Lukuja lukuja

Matso [20.12.2005 17:58:43]

#

En nyt keksinyt parempaakaan otsikkoa.. no, asiaan.

Miten sais toteutettua seyraavanlaisen systeemin, siis kysehän on nyt php:stä:

1. Arvotaan jokin luku väliltä 1-9 (se onnistuu rand() funktiolla)
2. Arvotaan toinen luku, mutta se ei saa olla sama kuin edellinen
3. Arvotaan kolmas luku, mutta se ei saa olla sama kuin kumpikaan edellisistä

Jäynis [20.12.2005 18:13:23]

#

php:sta en hirveästi tiedä mutta eikö se onnistu taulukolla, for silmukalla ja juurikin jollain rand funktiolla tyyliin

for i=0 to 2
taulukko[i]=rand()

Muuttujan taulukko luonnin, for silmukan ja rand funktion käytön saa varmasti äkkiä selville putkan php-oppaasta.

Matso [20.12.2005 18:39:50]

#

No ei paljon apua ollut, kyllä nyt nuo kaikki osaan tehdä mainiosti

Lebe80 [20.12.2005 18:45:12]

#

eli jäynis ei sitten ollenkaan katsonut pulman määritelmiä.

Itse toteuttaisin laittamalla luvut (1-9) taulukkoon.

Sen jälkeen shufflella pistäisin taulukko sekaisin.

https://www.php.net/manual/en/function.shuffle.php

$luvut = range(1,9);
shuffle($luvut);

echo $luvut[0]; // eka
echo $luvut[1]; // toka
echo $luvut[2]; // kolmas

jonka jälkeen otat tarvittavan määrän lukuja taulukon alusta.

edit:
i'm 1337 haxx0r
\o/

FooBat [20.12.2005 18:48:37]

#

Tämä onnistuu helpoiten tekemällä taulukko, jossa on luvut 1-9 ja sitten sekoittamalla tätä taulukkoa n kappaleella taulukon alkioden vaihtoja. Sitten arvottaessa hae vain taulukon luvut vuorotellen.

Toinen vaihtoehto on pitää kirjaa kaikista arvotuista luvuista ja sitten lukua arvottaessa tarkistaa tuliko jo aikaisemmin arvottu luku. Jos tuli niin arvotaan uudestaan.

Kolmas vaihtoehto on pitää arvottavat luvut jonkinlaisessa listassa. Tässä tapauksessa arvotaan aina kuinka mones listan alkio valitaan ja poistetaan listasta. Tällöin joka kierroksella lista lyhenee ja arvottavina lukuina säilyvät vain ne joita ei ole vielä arvottu.

Muitakin vastaavia ratkaisuja löytyy.

Edit: kappas, PHP:ssa on näköjään shuffle-funktio, jolla tuo ensimmäinen tapaus hoituu erittäin helposti.

Matso [20.12.2005 18:55:06]

#

Joo tuo shuffle onkin kätevä, kiitos.

Vastaus

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

Tietoa sivustosta