PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
for($i=1;$i<=10;$i++) random ??
Postitaja: kaarel 2016-02-23 22:47:47
tahan tekitada ridu 1 kuni 10 for abil
kenasti töötab
aga, kuidas ma saan nii, et ta selle 1 kuni 10 üksteise alla segi järjekorras teeb ?

mitte

1
2
3
4
jne

vaid

4
7
9
1
4
jne

ehk kõik numbrid 1 kuni 10 aga segi, kuid mitte random ??
RE: for($i=1;$i<=10;$i++) random ??
Postitaja: asd 2016-02-23 22:53:09
noh kui mitte random aga siiski segi, siis mõtle v'lja oma segi ajamise valem
RE: for($i=1;$i<=10;$i++) random ??
Postitaja: kaarel 2016-02-23 22:59:20
ma ei kujutagi ette kuidas ma seda teeks.
teen for tsükli 1 kuni 10
väljastab 1 kuni 10 järjest
tahaks, et ta väljastaks mingis järjekorras, näiteks 10,5,7,3,2,4,1,8,6,9

aga kuidas? ma ei suuda mõelda välja, kuidas ma seda teen.
võib vabalt olla ette antud järjekord.
RE: for($i=1;$i<=10;$i++) random ??
Postitaja: tiigrikutsu 2016-02-23 23:49:33
Aga kas sa otsisid ka korra?

http://php.net/manual/en/function.shuffle.php ja lehe algul kohe 1 näide:


<?php
$numbers = range(1, 10);
shuffle($numbers);
foreach ($numbers as $number) {
echo($number);
}
?>
RE: for($i=1;$i<=10;$i++) random ??
Postitaja: asd 2016-02-24 02:27:50
ta ei taha ju random massiivi, mida shuffle teeb... ilmselt autor soovib teada kuidas teha echo\t...

hoh kas või nii
$min = 1;
$max = 10;
$step = 3;
$segi = segi($min,$step,$max,array());
foreach($segi as $segi_item) {
echo $segi_item . '<br>';
}

function segi($from,$step,$to,$segaarray) {
for ($i=$from; $i<=$to; $i = $i+$step) {
$segaarray[] = $i;
}
if (count($segaarray) < $to) {
return segi($from+1,$step,$to,$segaarray);
}
else {
return $segaarray;
}
}
RE: for($i=1;$i<=10;$i++) random ??
Postitaja: blaa 2016-02-24 18:00:10
Mulle küll tundub, et sooviti just randomit, see on ju isegi teema pealkirjas.
Shuffle() on täpselt see, mis sobib. Võib olla mingis olukorras sobib ka array_rand().

See asd pakutud koodilõik on väga kaugel randomist.
RE: for($i=1;$i<=10;$i++) random ??
Postitaja: asd 2016-02-24 18:07:06
vaata, autor ju kirjutab "ehk kõik numbrid 1 kuni 10 aga segi, kuid mitte random ??"

seej\rel soovitusele "siis mõtle v'lja oma segi ajamise valem" ta vastab "ma ei kujutagi ette kuidas ma seda teeks", nii et mõelgu ise, kuidas ta need numrid segi ajab... mul lihtsalt lihtne näide kuidas võib olla mitte j'rjekorras 1-10 ja mitte random
RE: for($i=1;$i<=10;$i++) random ??
Postitaja: ise php 2016-02-24 18:36:18
Võimalik, et ta ei oska lihtsalt probleemi selgitada, mulle tundub, et ta mõtleb, et random annab ju suva numbreid ja kui ta annab ette vahemiku 1-10 siis ei saa ta ju kõiki numbreid täpselt ühe vaid võib seal saada kaks 3 ja nii edasi. Et see shuffle() variant oleks ehk sobilik.
RE: for($i=1;$i<=10;$i++) random ??
Postitaja: asd 2016-02-24 19:00:15
võib olla ka nii, kuid kes teda teab, ta kirjytab
"tahaks, et ta väljastaks mingis järjekorras, näiteks 10,5,7,3,2,4,1,8,6,9
aga kuidas? ma ei suuda mõelda välja, kuidas ma seda teen.
võib vabalt olla ette antud järjekord."

mina küll ei näe võimalikku matemaatlist loogikat selles järjekorras "10,5,7,3,2,4,1,8,6,9".

ja minu arust, siin polegi tegelikult midagi teha peale selle et autor peaks siiski aru saama, milline reegel peab olema selle massiivi j'rjekorras või siis shuffle või kasutagu kas või fibonacci või aritmeetilist/geomeetrilist jada jne... kuid ta peab ise otsustama jada moodustamise reegli üle, valmisoleva jada v'ljastamine on antud juhul aga tühine asi ...
RE: for($i=1;$i<=10;$i++) random ??
Postitaja: ise php 2016-02-24 21:45:56
No kui lähtuda sellest, et võib olla ka vabalt ette antud järjekord, siis oleks ju suisa lihtne programm

echo"10,5,7,3,2,4,1,8,6,9";
RE: for($i=1;$i<=10;$i++) random ??
Postitaja: Hr Valdnik 2016-02-28 21:46:16
Mis teeb probleemist aru saamise veel keerulisemaks, siis tema näites kordub number 4.

Seega segi ajades võib mõni number mitmekordistuda ja mõni number ära kaduda.

Mu hetkeline ette panek on järgnev funktsioon, mis peaks antud olukorraga perfektselt sobituma. Funktsioon on testitud ja toimiv.

<?php

function segatudArvudYhestKymneniKaarliMoodi() {

$alustamisArv = 4;
$arvudeKogum = [];

$valitudArv = $alustamisArv;

for ($i=0;$i<10;$i++) {
$arvudeKogum[] = $valitudArv;

if ($i % 4 === 0 || $i % 4 === 3) {
$valitudArv += 3;
}
else {
$valitudArv += 2;
}
if ($valitudArv > 10) {
$valitudArv -= 10;
}


}

return $arvudeKogum;
}

foreach(segatudArvudYhestKymneniKaarliMoodi() as $number) {
echo $number.'<br>';
}
?>

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0805180072784