View previous topic :: View next topic |
Author |
Message |
sinisa.kusic
Joined: 26 Jul 2005 Posts: 728 Location: Rijeka
|
Posted: 13.03.2006 23:40 Post subject: kako isipsati 7 random unikatnih brojeva od 1 do 39 |
|
|
Molim vas, ako znate, kako ispisati 7 random brojeva "unikatnih", dakle da se neoponavljaju u 7 različitih text polja?
Dakle, imam ( primjera radi ) tih 7 polja kojih pritiskom na gumb trebam pouniti s 7 unikatnih brojeva u rasponu od 1 do 39. Sve super sve pet, šala, zezazncija do dijela di trebam ubacit baš unikatne brojeve.
Molim vas ako imate kakvu ideju da to napravim.
Kako provjeriti da mi broj već nije izašao tako da ga neponovim?
Unaprijed zahvalan,
feelfree |
|
|
Back to top |
|
|
sinisa.kusic
Joined: 26 Jul 2005 Posts: 728 Location: Rijeka
|
Posted: 14.03.2006 03:40 Post subject: |
|
|
Evo 2:35 je u jutro, oči su mi ko' krafne i mislim da sam riješio stvar. Pa da isložim riješenje:
Code: |
_root.dugme.onRelease = function()
{
brojeviArray = new Array(1,2,3,4,5,6,7,8,9,10,
11,12,13,14,15,16,17,
18,19,20,21,22,23,24,
25,26,27,28,29,30,31,
32,33,34,35,36,37,38,39);
total = brojeviArray.length;
/*================================================================
| BROJ 1 |
=================================================================*/
rdm = Math.round(Math.random() * 38);
_root.broj1.text = brojeviArray[rdm];
/*================================================================
| BROJ 2 |
=================================================================*/
rdm = Math.round(Math.random() * 38);
if(brojeviArray[rdm] == _root.broj1.text)
{
if((rdm >= 1) || (rdm <= 38))
{
rdm++;
_root.broj2.text = brojeviArray[rdm];
}
else
{
rdm--;
_root.broj2.text = brojeviArray[rdm];
}
}
else
{
_root.broj2.text = brojeviArray[rdm];
}
/*================================================================
| BROJ 3 |
=================================================================*/
rdm = Math.round(Math.random() * 38);
if((brojeviArray[rdm] == _root.broj1.text)
|| (brojeviArray[rdm] == _root.broj2.text))
{
if((rdm >= 1) || (rdm <= 38))
{
rdm++;
_root.broj3.text = brojeviArray[rdm];
}
else
{
rdm--;
_root.broj3.text = brojeviArray[rdm];;
}
}
else
{
_root.broj3.text = brojeviArray[rdm];
}
/*================================================================
| BROJ 4 |
=================================================================*/
rdm = Math.round(Math.random() * 38);
if((brojeviArray[rdm] == _root.broj1.text)
|| (brojeviArray[rdm] == _root.broj2.text)
|| (brojeviArray[rdm] == _root.broj3.text))
{
if((rdm >= 1) || (rdm <= 38))
{
rdm++;
_root.broj4.text = brojeviArray[rdm];
}
else
{
rdm--;
_root.broj4.text = brojeviArray[rdm];
}
}
else
{
_root.broj4.text = brojeviArray[rdm];
}
/*================================================================
| BROJ 5 |
=================================================================*/
rdm = Math.round(Math.random() * 38);
if((brojeviArray[rdm] == _root.broj1.text)
|| (brojeviArray[rdm] == _root.broj2.text)
|| (brojeviArray[rdm] == _root.broj3.text)
|| (brojeviArray[rdm] == _root.broj4.text))
{
if((rdm >= 1) || (rdm <= 38))
{
rdm++;
_root.broj5.text = brojeviArray[rdm];
}
else
{
rdm--;
_root.broj5.text = brojeviArray[rdm];
}
}
else
{
_root.broj5.text = brojeviArray[rdm];
}
/*================================================================
| BROJ 6 |
=================================================================*/
rdm = Math.round(Math.random() * 38);
if((brojeviArray[rdm] == _root.broj1.text)
|| (brojeviArray[rdm] == _root.broj2.text)
|| (brojeviArray[rdm] == _root.broj3.text)
|| (brojeviArray[rdm] == _root.broj4.text)
|| (brojeviArray[rdm] == _root.broj5.text))
{
if((rdm >= 1) || (rdm <= 38))
{
rdm++;
_root.broj6.text = brojeviArray[rdm];
}
else
{
rdm--;
_root.broj6.text = brojeviArray[rdm];
}
}
else
{
_root.broj6.text = brojeviArray[rdm];
}
/*================================================================
| BROJ 7 |
=================================================================*/
rdm = Math.round(Math.random() * 38);
if((brojeviArray[rdm] == _root.broj1.text)
|| (brojeviArray[rdm] == _root.broj2.text)
|| (brojeviArray[rdm] == _root.broj3.text)
|| (brojeviArray[rdm] == _root.broj4.text)
|| (brojeviArray[rdm] == _root.broj5.text)
|| (brojeviArray[rdm] == _root.broj6.text))
{
if((rdm >= 1) || (rdm <= 38))
{
rdm++;
_root.broj7.text = brojeviArray[rdm];;
}
else
{
rdm++;
_root.broj7.text = brojeviArray[rdm];
}
}
else
{
_root.broj7.text = brojeviArray[rdm];
}
} |
Hvala iako niste stigli posat, da ste imali vremena znam da bi
PS: Znam da nije najelegantje riješenje i sigurno ima bolji način ali ja sam umoran a ovo radi |
|
|
Back to top |
|
|
sinisa.kusic
Joined: 26 Jul 2005 Posts: 728 Location: Rijeka
|
Posted: 14.03.2006 03:51 Post subject: |
|
|
aaaaaaaaaaaaaaa je...... mu ne radi. Nakon podosta klikanja izbaci mi dva ista broja. Ima li ko riješenje, savjet, bilo šta???
pleeeeeeeeeeeaseeeeeeeee |
|
|
Back to top |
|
|
Granda
Joined: 11 Aug 2005 Posts: 51
|
Posted: 14.03.2006 09:49 Post subject: |
|
|
nemam ti sad vremena pisat kod, no logika je slljedeča ;
Trebaš imat array sa brojevima koje koristiš u ovom slučaju "brojeviArray" i još jedan array gdje imaš iskorištene brojeve npr "pushed_brojeviArray", sve to u _root-u.
Pogledaj funkcije od array-a na macromedia site-u, jednostavne su.
Onda napraviš za svaki gumb Onrelease uzmi Rand broj iz array-a, pogledaj dali je več iskorišten(vidiš u array-u "pushed_brojeviArray"), ako nije stavi ga u prvo polje ako je dalje vrti loop dok ne nađeš neki koji nije iskorišten. tj. nije u "pushed_brojeviArray".
To ti je unique rješenje za bezbroj gumba a ne samo 7. |
|
|
Back to top |
|
|
Ivan Podrug - e1
Joined: 15 Apr 2005 Posts: 316 Location: Solin
|
Posted: 14.03.2006 10:35 Post subject: |
|
|
bez uspoređivanja ide brže.
imaš Array.slice
sa random funkcijom "čupkaš" jedan po jedan element iz seta brojeva i guraš u novi Array sa rezultatom (Array.push). |
|
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 14.03.2006 11:35 Post subject: |
|
|
Dobro su ti likovi rekli... inače program ima 3 linije koda, stvarno nisi normalan što si ono gore pisao |
|
|
Back to top |
|
|
astolitu
Joined: 26 Jun 2004 Posts: 547 Location: Zagreb
|
Posted: 14.03.2006 12:25 Post subject: |
|
|
Sulien wrote: | Dobro su ti likovi rekli... inače program ima 3 linije koda, stvarno nisi normalan što si ono gore pisao |
pa napisi tri jebene linije |
_________________ http://www.markobjedov.com/ |
|
Back to top |
|
|
carr
Joined: 13 Nov 2003 Posts: 1397 Location: Karlovac
|
Posted: 14.03.2006 12:46 Post subject: |
|
|
Code: | // obzirom da se vjerojatno radi o lutriji polje se puni dinamicki
// tako da mozes napraviti jednom ako oces i loto 6/45
total = 39;
limit = 7;
// polje s oridjidji brojevima
brojeviArray = new Array();
// polje se izvucenim brojevima
brojevi = new Array();
// puni polje
for(i=1;i<=total;i++)
brojeviArray.push(i);
// napuni ga
while(brojevi.length < limit){
rnd = Math.round(Math.random() * 38);
brojevi.push( brojeviArray.slice(rnd, rnd+1)[0] );
}
for(i=0;i<brojevi.length;i++)
trace(brojevi[i]); |
|
_________________ Bolje biti malo lud, nego malo pametan. |
|
Back to top |
|
|
sinisa.kusic
Joined: 26 Jul 2005 Posts: 728 Location: Rijeka
|
Posted: 14.03.2006 12:55 Post subject: |
|
|
hvala na logici, hvala na idejama, care evo sad ću probat tvoje riješenje.
@Sulien nemam razvijenu progamersku logiku, nisam programer i znam nisam normalan
Hvala svima |
|
|
Back to top |
|
|
sinisa.kusic
Joined: 26 Jul 2005 Posts: 728 Location: Rijeka
|
Posted: 14.03.2006 13:30 Post subject: |
|
|
@Carr tvoj kod iako paktičniji, čitljiviji i logičniji radi istu stvar kao i moj, ponavlja dva ista broja |
|
|
Back to top |
|
|
carr
Joined: 13 Nov 2003 Posts: 1397 Location: Karlovac
|
Posted: 14.03.2006 14:49 Post subject: |
|
|
moj zajeb, pobrkao sam slice i splice funkcije
evo ispravljeno
Code: | // obzirom da se vjerojatno radi o lutriji polje se puni dinamicki
// tako da mozes napraviti jednom ako oces i loto 6/45
total = 39;
limit = 7;
// polje s oridjidji brojevima
brojeviArray = new Array();
// polje se izvucenim brojevima
brojevi = new Array();
// puni polje
for(i=1;i<=total;i++)
brojeviArray.push(i);
// napuni ga
while(brojevi.length < limit){
rnd = Math.round(Math.random() * (brojeviArray.length-1));
brojevi.push( brojeviArray.splice(rnd, 1)[0] );
}
for(i=0;i<brojevi.length;i++)
trace(brojevi[i]); |
|
_________________ Bolje biti malo lud, nego malo pametan. |
|
Back to top |
|
|
sarma
Joined: 02 Nov 2004 Posts: 99 Location: Osijek/ZG, Croatia
|
Posted: 14.03.2006 15:02 Post subject: |
|
|
-- možeš probati i ovo
Code: | //*******************************************************************************
//ispiši 7 različitih brojeva od 1 - 39
function getSerious(){
var Brojevi:Array = new Array();
for(var i:Number =0;i<40;i++){
Brojevi[i] = i;
}
//TextBox ti je primjer za tvoje tekstove :)
var TextBox:Array = new Array(6);
for(var n:Number=0;n<7;n++){
TextBox[n] = Brojevi[random(i)];
trace("TextBox"+n+" "+TextBox[n]);
}
}
//udri brigu na veselje .......
getSerious();
//********************************************************************************* |
--par puta CTRL+ENTER pa vidi
|
_________________ -- 45th generation Roman -- |
|
Back to top |
|
|
sinisa.kusic
Joined: 26 Jul 2005 Posts: 728 Location: Rijeka
|
Posted: 14.03.2006 15:36 Post subject: |
|
|
super sad sve radi. Hvala na quick riješenju. Hvala svima.
Na meni je sada da dooobro proučim vaše primjere i pokušam nešto naučit.
@Carr Budemo se dogovorili za postotak |
|
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 14.03.2006 15:54 Post subject: |
|
|
astolitu wrote: | Sulien wrote: | Dobro su ti likovi rekli... inače program ima 3 linije koda, stvarno nisi normalan što si ono gore pisao |
pa napisi tri jebene linije |
pa neću valjda sve radit, vidiš da su drugi uskočili
ali eto ti te 3 linije u PHP, nije teško prevest
Code: | function loto($num, $size){
$results = array();
while(count($results)<$num) if(!in_array(($n=rand(1,$size)),$results)) $results[]=$n;
return $results;
} |
EDIT: sad sam se zaletio u reference i vidim da ActionScript nema array search... hm hm onda se ipak ne može prevest bez da se doda još koja linija
...svejedno, dodatna linija ili ne, primijeti kontrast između ovoga i svojeg prvog rješenja, Feelfree |
|
|
Back to top |
|
|
|