praegune kellaaeg 20.06.2025 23:43:14
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
mark11
HV vaatleja
liitunud: 28.01.2006
|
12.06.2009 18:50:17
|
|
|
andrusny kirjutas: |
See pole ju see mida sooviti, kus kohas siin hoitakse meeles, millised numbrid on genereeritud juba? Vaadatakse seda ainult tsükli jooksul, kuid eelmist tsüklit ei arvestata ju. Või sain ma valesti aru? |
usun, et said valesti aru, kood teeb mida kood tegema peab.
|
|
Kommentaarid: 1 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
1 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
12.06.2009 18:56:59
|
|
|
Proovi siis ise, kood teeb jah seda mida tegema peab, kuid said valesti aru, mida sooviti.
Tee refresh oma browserile ja vaata, kas korduvad samad kombinatsioonid.
Korduvad küll. Kuigi ma ei näe sellel ühekohaliste numbritega mõtet.
tsitaat: |
Sellisel juhul ei saaks sa ühekohalisi numbreid rohkem kui kaks korda genereerida, sest nad lõpevad lihtsalt otsa. |
Aga kui oleks vaja näiteks numbreid 1-1000 genereerida ja siis, et nad ei korduks kui proge uuesti laadida siis oleks asjal jumet.
Näiteks mingi loterii, et samasid võidu kombinatsioone mitte tekitada.
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
mark11
HV vaatleja
liitunud: 28.01.2006
|
12.06.2009 20:17:12
|
|
|
andrusny kirjutas: |
Proovi siis ise, kood teeb jah seda mida tegema peab, kuid said valesti aru, mida sooviti.
Tee refresh oma browserile ja vaata, kas korduvad samad kombinatsioonid.
Korduvad küll. Kuigi ma ei näe sellel ühekohaliste numbritega mõtet.
tsitaat: |
Sellisel juhul ei saaks sa ühekohalisi numbreid rohkem kui kaks korda genereerida, sest nad lõpevad lihtsalt otsa. |
Aga kui oleks vaja näiteks numbreid 1-1000 genereerida ja siis, et nad ei korduks kui proge uuesti laadida siis oleks asjal jumet.
Näiteks mingi loterii, et samasid võidu kombinatsioone mitte tekitada. |
ah selles mõttes, siis ma kasutaks andmebaase, et hoida olemasolevaid kombinatsioone seal..
minu viga
|
|
Kommentaarid: 1 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
1 |
|
tagasi üles |
|
 |
tulema
HV kasutaja
liitunud: 23.04.2003
|
14.06.2009 12:56:06
|
|
|
mark11 kirjutas: |
ah selles mõttes, siis ma kasutaks andmebaase, et hoida olemasolevaid kombinatsioone seal.. |
Kasutades andmebaasi, kas olemasolevale koodile tuleb palju kirjutamist juurde või piisab paarist koodireast ja voilaa?
Failis hoides genereerituid numbreid on vist lihtsaim viis ja selles suunas ka liikuda.
Jäädes ikkagi ootama seda viimast lihvi
|
|
Kommentaarid: 67 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
60 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
14.06.2009 16:55:00
|
|
|
Kui sul on andmebaasi võimalus olemas ja oled ennem kasutanud võid panna baasi, kui mitte võib sellise lihtsa rakenduse jaoks küll faili kasutada, pole mingit mõtet hakata jebima baasi tegema ja õppima otsima, kuidas see toimib.
Kasuta näiteks sellist salvestust
if(is_file('numbrid.php')){
$fk=fopen('numbrid.php',"r");
flock($fk, LOCK_EX);
$nr=fgets($fk);
$nrM=unserialize($nr); // olemasolevad numbrid massiivis
}
// *** See osa tuleb koodi lõppu, kui oled sinna masiivi lisanud numbrid, mida kasutasid sellel korral ***
$save=serialize($nrM);
$fk=fopen('numbrid.php',"w+");
fputs($fk,$save);
fclose($fk); |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
tulema
HV kasutaja
liitunud: 23.04.2003
|
14.06.2009 20:25:36
|
|
|
andrusny kirjutas: |
Kui sul on andmebaasi võimalus olemas ja oled ennem kasutanud võid panna baasi, kui mitte võib sellise lihtsa rakenduse jaoks küll faili kasutada, pole mingit mõtet hakata jebima baasi tegema ja õppima otsima, kuidas see toimib.
Kasuta näiteks sellist salvestust
if(is_file('numbrid.php')){
$fk=fopen('numbrid.php',"r");
flock($fk, LOCK_EX);
$nr=fgets($fk);
$nrM=unserialize($nr); // olemasolevad numbrid massiivis
}
// *** See osa tuleb koodi lõppu, kui oled sinna masiivi lisanud numbrid, mida kasutasid sellel korral ***
$save=serialize($nrM);
$fk=fopen('numbrid.php',"w+");
fputs($fk,$save);
fclose($fk); |
|
Kohutav, proovisin neid kahte koodi omavahel siduda aga ei saanud hakkama. Numbrid.php faili sisse tuleb "b:0;", mida see täpselt tähendab, ei oska öelda. Proovisin ka käsitsi numbreid lisada numbrid.php faili aga paraku ka see variant ei töötanud.
Aluseks võtsin:
php:
|
<?php function number_list($numbers) { if(count($list) > 0) return $list; foreach($numbers as $id => $data) return $list; } function sweet_output($length) { array("number" => 1, "percent" => 50), array("number" => 4, "percent" => 30), array("number" => 5, "percent" => 10), array("number" => 6, "percent" => 5), array("number" => 0, "percent" => 4), array("number" => 2, "percent" => 1)); $xlist = number_list($numbers); // Generate random sequence $max_elements = count($xlist); $counter = 0; while($counter++ < $length && $counter < $max_elements) { $temp_ = $xlist[$counter]; if(in_array($temp_, $r_sequence)) $length++; else $r_sequence[] = $temp_; } } // Generate 3 pair of numbers and make sure they are not same $pairs = 0; while($pairs < 3) { if(! in_array(($temp = sweet_output (3)), $list)) { echo "Pair number {$pair} with content: {$temp} <br>"; $list[] = $temp; $pairs++; } } ?>
|
|
|
Kommentaarid: 67 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
60 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
14.06.2009 20:38:49
|
|
|
tulema, see "b:0;" on serialiseeritud kujul massiiv või muu elukas, mida saab salvestada faili tekstikujul, et hiljem see sealt kergelt uuesti tagasi vanasse vormi tõmmata.
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
15.06.2009 00:01:36
|
|
|
Nüüd seda $list salvesta ja hiljem loe sisse, kuid nagu isegi näed juba kolmel korral, mis sa tsüklisse panid hakkavad numbrid otsa lõppema.
Nüüd all näed $save kuva milliselt sul numbrid faili salvestatakse, salvestad selle. Kui loed sisse selle uuesti ja teed unserialize() saad täpselt sama massiivi, nagu $list ennem oli.
<?php
function number_list($numbers)
{
static $list = array();
if(count($list) > 0) return $list;
foreach($numbers as $id => $data)
$list += array_fill(count($list), $data["percent"], $data["number"]);
return $list;
}
function sweet_output($length)
{
static $numbers = array(
array("number" => 1, "percent" => 50),
array("number" => 4, "percent" => 30),
array("number" => 5, "percent" => 10),
array("number" => 6, "percent" => 5),
array("number" => 0, "percent" => 4),
array("number" => 2, "percent" => 1));
$xlist = number_list($numbers);
shuffle($xlist);
// Generate random sequence
$max_elements = count($xlist);
$r_sequence = array();
$counter = 0;
while($counter++ < $length && $counter < $max_elements)
{
$temp_ = $xlist[$counter];
if(in_array($temp_, $r_sequence)) $length++;
else $r_sequence[] = $temp_;
}
return $r_sequence;
}
$tyhi=array();
$list = array();
// Generate 3 pair of numbers and make sure they are not same
$pairs = 0;
while($pairs < 3)
{
$temp = sweet_output(4);
for($i=0;$i<count($temp);$i++){
if(!in_array(($temp[$i]), $list))
{
$out[]=$temp[$i];
$vahe[]=$temp[$i];
}
}
$out2=implode($out,",");
$out= $tyhi;
echo "Pair number {$pairs} with content: {$out2} <br>";
$list = array_merge($list,$vahe) ;
$pairs++;
}
echo "<br><br>";
var_dump($list);
$save=serialize($list);
echo "<br><br>".$save;
?> |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
tulema
HV kasutaja
liitunud: 23.04.2003
|
15.06.2009 19:00:32
|
|
|
uhh! Ma ei saanudki nüüd täpselt aru, mida selle lausega öelda on tahetud: "Nüüd all näed $save kuva milliselt sul numbrid faili salvestatakse". Koodis ma ei näe ühtegi faililaiendit (.txt|.php) kuhu ta võiks need numbrid salvestada. Kas ma olen äkki millestki valesti aru saanud?
Koodist ja tulemusest endast. Kui on soov kaks numbrid genereerida, siis genereerib ühe tulemuse.
Pair number 0 with content: 4,1,0,5
Pair number 1 with content: 6
Ka sellist loetakse korduseks, kui tulemuses on näiteks 1, 2, 3 ja peale lehelaadimist tuleb 1, 3, 2. See tähendaks siis seda, et arvud peaksid tulema tulemuses kronoloogilises järjekorras, mis tooks kaasa veel pikema koodi
Kas tõesti ei ole mingisugust lihtsat lahendust, kus genereeritud numbrid paneb otse .txt faili ja rohkem neid numbreid tulemuses ei kuva, kasvõi käsitsi lisades?
|
|
Kommentaarid: 67 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
60 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
15.06.2009 19:47:09
|
|
|
tsitaat: |
Koodis ma ei näe ühtegi faililaiendit (.txt|.php) kuhu ta võiks need numbrid salvestada.
|
Eeldasin, et teed koodi ise. Ma andsin ainult suuna.
Proovi seda.
See salvestab kõik kasutatud numbrid faili ja ei lase neil korduda järgmisel refreshil. Kasutatud numbreid kuvatakse ka kõige lõpus.
<?php
if(is_file('numbrid.php')){
$fk=fopen('numbrid.php',"r");
flock($fk, LOCK_EX);
$nr=fgets($fk);
$list=unserialize($nr); // olemasolevad numbrid massiivis
} else {$list = array();}
function number_list($numbers)
{
static $list = array();
if(count($list) > 0) return $list;
foreach($numbers as $id => $data)
$list += array_fill(count($list), $data["percent"], $data["number"]);
return $list;
}
function sweet_output($length)
{
static $numbers = array(
array("number" => 1, "percent" => 50),
array("number" => 4, "percent" => 30),
array("number" => 5, "percent" => 10),
array("number" => 6, "percent" => 5),
array("number" => 0, "percent" => 4),
array("number" => 2, "percent" => 1));
$xlist = number_list($numbers);
shuffle($xlist);
// Generate random sequence
$max_elements = count($xlist);
$r_sequence = array();
$counter = 0;
while($counter++ < $length && $counter < $max_elements)
{
$temp_ = $xlist[$counter];
if(in_array($temp_, $r_sequence)) $length++;
else $r_sequence[] = $temp_;
}
return $r_sequence;
}
$tyhi=array();
$out = array();
// Generate 3 pair of numbers and make sure they are not same
$pairs = 0;
while($pairs < 3)
{
$temp = sweet_output(4);
for($i=0;$i<count($temp);$i++){
if(!in_array(($temp[$i]), $list))
{
$out[]=$temp[$i];
$list[]=$temp[$i];
}
}
$out2=implode($out,",");
$out= $tyhi;
echo "Pair number {$pairs} with content: {$out2} <br>";
$pairs++;
}
// *** See osa tuleb koodi lõppu, kui oled sinna masiivi lisanud numbrid, mida kasutasid sellel korral ***
$save=serialize($list);
$fk=fopen('numbrid.php',"w+");
fputs($fk,$save);
fclose($fk);
echo "<br><br>Siin on numbrid, mis on juba kasutatud<br><br>";
for($i=0;$i<count($list);$i++){
echo "Number ".($i+1)." on - ".$list[$i]."<br>";
}
?> |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
tulema
HV kasutaja
liitunud: 23.04.2003
|
15.06.2009 20:58:30
|
|
|
andrusny
Ei ole ikka see, mida sooviksin. Teen väikese näitliku versiooni.
On olemas puhas genereerimise script, mis genereerib numbreid browseril. AMD poolt kirjutatud script,
php:
|
<?php function rndnumbers($array) { $i = 0; foreach($array as $val) { $i += $val[1]; } return $ret; } function rnd($mitu_arvu = 1) { $arvud = rndnumbers($arvud); $i = $mitu_arvu; while(count($arvud) > 0 && $i-- > 0) { $i++; continue; } $tmp[] = $arvud[$id]; } while(count($tmp) > 0 && $mitu_arvu-- > 0) { if(count($tulemus) == 0 && $tmp[$id] == 0) { $mitu_arvu++; continue; } $tulemus[] = $tmp[$id]; } return $tulemus; } for ($i = 0; $i < 3; $i++) { } ?>
|
Genereeritud numbrid:
1 3 7 8 10
4 7 8 9 10
3 4 5 9 10
Genereerimise scriptile tule juurde kirjutada lisa kood/script, mille ülesanne on kontrollida kordus numbreid.
Nüüd on need numbrid korra juba ekraanilt läbi käinud, läheb automaatselt .txt| .php faili. Numbrid, mis on juba failis, seda kontrollib lisa script, kas antud numbrikombinatsioon on ekraanil olnud või mitte.
Olemasoleva faili sisu:
1 3 7 8 10
4 7 8 9 10
3 4 5 9 10
andrusny: Mingil põhjusel said arvud otsa antud scriptis, kuid numbrikombinatsioone on miljoneid.
Ma ei tea, kas me mõistame nüüd üksteist
|
|
Kommentaarid: 67 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
60 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
15.06.2009 21:47:56
|
|
|
Sa ei tekita numbrikombinatsioone vaid kontrollid üksikuid numbreid. Seetõttu ka lõppeb see. Sa pead kontrollima siis seda neljakohalist numbrit ja seda salvestama, kuid sinu näidetes ta annab need numbrid ühekohalisena ja paneb neid lihtsalt neli tükki kõrvuti ja sellest siis ka viga. Lõpevad ühekohalised numbrid ja ongi otsas.
********************************
Tegin nüüd sellise, mis väljastab neljakohalisi ja need ei tohiks nüüd korduda.
<?php
global $list;
if(is_file('numbrid.php')){
$fk=fopen('numbrid.php',"r");
flock($fk, LOCK_EX);
$nr=fgets($fk);
$list=unserialize($nr); // olemasolevad numbrid massiivis
} else {$list = array();}
function number_list($numbers)
{
static $list = array();
if(count($list) > 0) return $list;
foreach($numbers as $id => $data)
$list += array_fill(count($list), $data["percent"], $data["number"]);
return $list;
}
function sweet_output($length)
{
static $numbers = array(
array("number" => 1, "percent" => 50),
array("number" => 4, "percent" => 30),
array("number" => 5, "percent" => 10),
array("number" => 6, "percent" => 5),
array("number" => 0, "percent" => 4),
array("number" => 2, "percent" => 1));
$xlist = number_list($numbers);
shuffle($xlist);
// Generate random sequence
$max_elements = count($xlist);
$r_sequence = array();
$counter = 0;
while($counter++ < $length && $counter < $max_elements)
{
$temp_ = $xlist[$counter];
if(in_array($temp_, $r_sequence)) $length++;
else $r_sequence[] = $temp_;
}
return $r_sequence;
}
//*****************************************************************
function kontroll(){
global $out;
global $list;
// !in_array($out2), $list)
$temp = sweet_output(4);
$out2=implode($temp,"");
if( !in_array(($out2), $list))
{
$out=$out2;
$list[]=$out2;
} else
{ kontroll();}
}
//*************************************************************
$tyhi="";
//$out = array();
//$list = array();
// Generate 3 pair of numbers and make sure they are not same
$pairs = 0;
while($pairs < 3)
{
kontroll();
echo "Pair number {$pairs} with content: {$out} <br>";
// $list = array_merge($list,$vahe) ;
$pairs++;
$out= $tyhi;
}
// *** See osa tuleb koodi lõppu, kui oled sinna masiivi lisanud numbrid, mida kasutasid sellel korral ***
$save=serialize($list);
$fk=fopen('numbrid.php',"w+");
fputs($fk,$save);
fclose($fk);
echo "<br><br>Siin on numbrid, mis on juba kasutatud<br><br>";
for($i=0;$i<count($list);$i++){
echo "Number ".($i+1)." on - ".$list[$i]."<br>";
}
?>
|
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
tulema
HV kasutaja
liitunud: 23.04.2003
|
16.06.2009 23:46:48
|
|
|
andrusny : Sinu viimane jõupingutus viis asja lõpp-punkti. Kõik töötab perfektselt nii nagu algselt soovisin. Suuremad tänud andrusny ja muidugi teistele ka, kes kaasa aitasid ja mõtisklesid.
|
|
Kommentaarid: 67 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
60 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|