Avatar billede cthun Nybegynder
17. april 2002 - 11:08 Der er 36 kommentarer og
1 løsning

Random

Hvordan laver jeg random på tallene 1 til 25??
Avatar billede barklund Nybegynder
17. april 2002 - 11:11 #1
random(25)+1

random(n) returnerer et tilfældigt tal mellem 0 og n-1, så random(25) returner et tal fra 0-24... "+1" giver 1-25

/Barklund
Avatar billede cthun Nybegynder
17. april 2002 - 11:13 #2
Hvordan tildeler jeg dem så vær deres bogstav??
Avatar billede cthun Nybegynder
17. april 2002 - 11:17 #3
b+i = "0-1";
b+i = "0-2";
b+i = "0-3";
b+i = "0-4";
b+i = "0-5";
b+i = "0-6";
b+i = "0-7";
b+i = "0-8";
b+i = "0-9";
osv....

Hvordan tildeler jeg i et random-nr fra 1 - 25... De skal selvfølgelig allesammen være uidentiske!
Avatar billede cthun Nybegynder
17. april 2002 - 11:18 #4
GLEM "Hvordan tildeler jeg dem så vær deres bogstav??"
Avatar billede hoejrup Nybegynder
17. april 2002 - 11:18 #5
Skal der kun tildeles et tal til hvert bogstav, og tallet kun skal forekomme en gang
for hvert bogstav?

/per
Avatar billede cthun Nybegynder
17. april 2002 - 11:22 #6
Det skal se sådan ud:

b1
b2
b3
b4
b5
osv...

Bare random!
Avatar billede barklund Nybegynder
17. april 2002 - 11:24 #7
og skal disse så gemmes i et array eller i nogle andre variabler?
Avatar billede cthun Nybegynder
17. april 2002 - 11:27 #8
variabler
Avatar billede barklund Nybegynder
17. april 2002 - 11:36 #9
varblerne a1-a25 fo eksempel?

a1 = "b14";
a5 = "b3";

osv...

refererer b1-25 til andre variabler?
Avatar billede cthun Nybegynder
17. april 2002 - 11:46 #10
Nej,

Randomtal 1 = "b14"
Randomtal 2 = "b3"
osv...
Fra 1 - 25
Avatar billede barklund Nybegynder
17. april 2002 - 11:46 #11
Egentlig spørger jeg om, i hvilken sammehæng det skal bruges og hvad det hele er til...
Avatar billede barklund Nybegynder
17. april 2002 - 11:51 #12
kan vi så ikke kalde dem for

Randomtal = new Array();
Randomtal[1] = "b14";
Randomtal[2] = "b3";

osv...

så er det et array, hvilket er nemmere i alle andre sammenhænge...
Avatar billede cthun Nybegynder
17. april 2002 - 11:52 #13
Jeg er i gang med et puzzle-spil... hvor brikkerne skal ligges random ud på nogle forskellige koordinater.

b+i = "0-0";
b+i = "0-1";
osv...

_root[b1]._x = _root[b1]._x + 250;
_root[b1]._y = _root[b1]._y + 100;
_root[b2]._x = _root[b2]._x + 100;
_root[b2]._y = _root[b2]._y + 100;
osv...

Hvor i skal være et randomtal fra 1 til 25
Avatar billede barklund Nybegynder
17. april 2002 - 11:55 #14
okay...  hvad hedder dine brikker? fra 0-0 til 4-4?
Avatar billede cthun Nybegynder
17. april 2002 - 11:58 #15
0-0
0-1
0-2
0-3

1-0
1-1
1-2
1-3

2-0
2-1
2-2
2-3

3-0
3-1
3-2
3-3

4-0
4-1
4-2
4-3

5-0
5-1
5-2
5-3
Avatar billede barklund Nybegynder
17. april 2002 - 12:05 #16
hmm... der er altså 24, er der ikke? vi prøver:

b = new Array(); //heri holdes b[0] til b[23]
var x = 0;
for (var i = 0; i < 3; i++) {
    for (var j = 0; j < 5; j++)
        b[x++] = i+"_"+j;
}
for (x = 0; x < 24; x++) {
    var rand = random(24);
    var $_temp = b[rand];
    b[rand] = b[x];
    b[x] = $_temp;
}

nu har du et array af b[0]..b[23] med 24 index til de 24 brikker i random rækkefølge...
Avatar billede barklund Nybegynder
17. april 2002 - 12:33 #17
Virker det?
Avatar billede cthun Nybegynder
17. april 2002 - 12:42 #18
Øhh. det ved jeg ikke!!

skal det kaldes således??
_root.b[1]._x = _root.b[1]._x + 250;
_root.b[1]._y = _root.b[1]._y + 100;
Avatar billede cthun Nybegynder
17. april 2002 - 12:42 #19
Den viser ikke fejl!
Avatar billede barklund Nybegynder
17. april 2002 - 12:42 #20
niksen...

_root[b[1]]._x

som før...
Avatar billede barklund Nybegynder
17. april 2002 - 12:45 #21
men husk at starte på b[0]...
Avatar billede pixelpaw Nybegynder
17. april 2002 - 12:46 #22
barklund, kan du komme med en uddøbende forklaring hvad der egentlig sker?
Avatar billede pixelpaw Nybegynder
17. april 2002 - 12:47 #23
når jeg skal bruge et tilfældigt array bruger jeg:

arrRandom = new Array();
for (i=0; i<24; i++) {
    arrRandom[i] = i;
}
function sortRand() {
    if (random(2) == 0) {
        return -1;
    }
    if (random(2) == 0) {
        return 1;
    }
}
arrRandom.sort(sortRand);
trace(arrRandom);
Avatar billede barklund Nybegynder
17. april 2002 - 13:00 #24
ja, jeg laver min egen lille random-funktion, der for hvert eneste index forfra bytter det ud med en tilfældig... Den kører arrayet igennem 1 gang og færdig. Flash's indbyggede sort() kører arrayet igennem flere gange for at kunne sortere og man kan så sætte den til at sortere efter (random(3)-1), så det korteste er at skrive:

arrRandom = new Array();
var sortRand = function(a,b) {return random(3)-1); };
arrRandom.sort(sortRand);

Men den er lidt sløv... jeg ville istedet lave en:

Array.prototype.random = function() {
    var l = this.length;
    for (i in this) {
        var r = random(l);
        var $_temp = this[r];
        this[r] = this[i];
        this[i] = $_temp;
    }
}

og så bruge:

arrRandom.random();

/Barklund
Avatar billede pixelpaw Nybegynder
17. april 2002 - 13:05 #25
Men hvad med en lille forklaring, linje for linje?
Keg ved f.eks. ikke hvad $ gør.
Avatar billede barklund Nybegynder
17. april 2002 - 13:06 #26
ingenting... $_temp er bare et navn for en midlirtidig variabel... Det mærkelige navn er valgt for at vlære 100% sikker på ikke at overskrive nogle andre variabler andre steder i nogle scripts... sådan en slags standard...
Avatar billede pixelpaw Nybegynder
17. april 2002 - 13:10 #27
jeg får et lidt mærkeligt output med dette:

arrRandom = new Array();
for (i=0; i<24; i++) {
    arrRandom[i] = i;
}
Array.prototype.fncRandom = function() {
    var l = this.length;
    for (i in this) {
        var r = random(l);
        var $_temp = this[r];
        this[r] = this[i];
        this[i] = $_temp;
    }
}
trace(arrRandom);
trace(arrRandom.length);
arrRandom.fncRandom();
trace(arrRandom);
trace(arrRandom.length);

output:
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
24
0,[type Function],9,3,20,18,14,6,22,1,12,4,8,11,13,17,16,5,21,7,19,2,23,10

hvor dælen kommer [type Function] fra?
24
Avatar billede pixelpaw Nybegynder
17. april 2002 - 13:11 #28
hov, det "24" hører til output
Avatar billede cthun Nybegynder
17. april 2002 - 13:14 #29
ok... Random virker! Alle 24 brikker bliver bare ikke valgt!!

Jeg har prøvet at printe b[0]værdien ud i et dyn txtfelt..
men det er ikke altid der kommer nogen værdi i det!!
Avatar billede cthun Nybegynder
17. april 2002 - 13:16 #30
3 mins!
Avatar billede cthun Nybegynder
17. april 2002 - 13:19 #31
Det virkede med lidt ændringer ;-)

b = new Array(); //heri holdes b[0] til b[23]
var x = 0;
for (var i = 0; i < 6; i++) {
    for (var j = 0; j < 4; j++)
        b[x++] = i+"-"+j;
}
for (x = 0; x < 24; x++) {
    var rand = random(24);
    var $_temp = b[rand];
    b[rand] = b[x];
    b[x] = $_temp;
}

Takker!
Avatar billede barklund Nybegynder
17. april 2002 - 13:20 #32
Nåja.... jeg havde en "_" du havde en "-"... tarker for point!
Avatar billede barklund Nybegynder
17. april 2002 - 13:35 #33
undskyld.. det er fordi Array.prototype.fncRandom() dukker op i en for..in - den er nu en del af Array-objektet... den kan skjules med den udokumenterede ASSetPropFlags()... tilføj:

ASSetPropFlags(Array.prototype, "fncRandom", 7, true);

Informationer på: http://chattyfig.figleaf.com/flashcoders-wiki/index.php?ASSetPropFlags

/Barklund
Avatar billede barklund Nybegynder
17. april 2002 - 13:36 #34
Denne linie skal tilføjes efter definitionen på Array.prototype.fncRandom()
Avatar billede pixelpaw Nybegynder
17. april 2002 - 13:41 #35
så kan man jo bare lave for..in om til
for (i=0;i<this.length;i++) {
Avatar billede barklund Nybegynder
17. april 2002 - 13:44 #36
nænej... For array-objektet er nu "forurenet" med denne funktion, og det vil det altid være... det vil alle instanser af array-objekter også være... derfor skal den skjulet... for..in kører derudover også hurtigere end for(;;)
Avatar billede pixelpaw Nybegynder
17. april 2002 - 13:56 #37
Ok, smart. Tak for hjælpen barklund
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester