Hei,
Tarvitsin koodia, joka arpoo muutaman kirjaimen. Esimerkiksi koodi arpoisi kirjainten a-z väliltä 7 kirjainta ja sijoittaisi ne muuttujaan.
Perjaatteessa kuin rand(), mutta kirjaimilla.
Kenties näppärämpiä ratkaisuja on, mutta itse tekisin niin, että kirjoitetaan yhteen muuttujaan kirjaimet a-z, arvotaan luku väliltä 0-24 ja poimitaan muuttujasta lukua vastaava kirjain. Toistetaan halutun monta kertaa.
Ihan hyvä idea. Miten otan numeron kirjaimen numeron kohdalta? Siis, jos numero on 4, niin otetaan 4 kirjain muuttujasta. Miten tämä onnistuu?
Toimisko seuraava (koodi on c:tä ja rand() palauttaa arvon väliltä [0,RAND_MAX])?
for(int i = 0; i < 7; i++) { kirjain = rand() % ('z'-'a') + 'a'; muuttuja[i] = kirjain; }
rocceri kirjoitti:
Ihan hyvä idea. Miten otan numeron kirjaimen numeron kohdalta? Siis, jos numero on 4, niin otetaan 4 kirjain muuttujasta. Miten tämä onnistuu?
$merkkijono[$monesko_merkki]
kayttaja-2499 kirjoitti:
Toimisko seuraava (koodi on c:tä ja rand() palauttaa arvon väliltä [0,RAND_MAX])?
for(int i = 0; i < 7; i++) { kirjain = rand() % ('z'-'a') + 'a'; muuttuja[i] = kirjain; }
Tarkoitus oli tehdä PHP:llä nettisivulle ;)
GimPelzi kirjoitti:
Rocceri kirjoitti:
Ihan hyvä idea. Miten otan numeron kirjaimen numeron kohdalta? Siis, jos numero on 4, niin otetaan 4 kirjain muuttujasta. Miten tämä onnistuu?
$merkkijono[$monesko_merkki]
Niimpä tietenkin ;)
<?php for($i = 0; $i < 5; $i++) { $letters = "abcdefghijklmnopqrstuvwxyz"; $randletters = rand(1,25); $totalrandletters = $letters[$randletters]; echo $totalrandletters; } ?>
Näin tein, ja sitten kun yhdistin numerot:
<?php $rand1 = rand(25659568396968,3474579580572626357); $rand3 = rand(25659568396968,3474579580572626357); $rand4 = rand(25659568396968,3474579580572626357); $rand5 = rand(25659568396968,3474579580572626357); for($i = 0; $i < 5; $i++) { $letters = "abcdefghijklmnopqrstuvwxyz"; $randletters = rand(1,25); $totalrandletters = $letters[$randletters]; $totalrand = "$totalrandletters$rand1$totalrandletters$rand2 $totalrandletters$rand3$totalrandletters$rand4 $totalrandletters$rand5$totalrandletters"; } echo $totalrand; ?>
Ehkä helpomminkin voi tehdä
Rocceri kirjoitti:
Tarkoitus oli tehdä PHP:llä nettisivulle ;)
Joskus samat temput toimivat toisissakin kielissä.
Tietokone käsittelee kirjaimiakin numeroina. Esitettäessä ne ovat pikselimössöä.
Tässä on merkkijonon arpova funktio, jonka parametrit ovat merkkivälin ensimmäinen ja viimeinen merkki sekä merkkien määrä.
<?php function arvonta($eka, $vika, $maara) { for ($i = 0; $i < $maara; $i++) { $tulos .= chr(rand(ord($eka), ord($vika))); } return $tulos; } // arvotaan 7 merkkiä väliltä a-z echo arvonta("a", "z", 7); ?>
Funktio ord muuttaa merkin ASCII-koodiksi ja funktio chr muuttaa ASCII-koodin merkiksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.