Avatar billede 2cool4you Nybegynder
25. august 2001 - 14:12 Der er 19 kommentarer og
1 løsning

81 tilfældig

jeg skal bruge noget script der vælger mellem
81 forskelige tal (1-81)så\'en jeg kan få det til at gøre noget forskeligt efter hvilket tal det er,
den skal også helst nemt kunne udbyges til nogle flere tal (det er ikke noget krav)og den må ikke fungere via klokslettet
Avatar billede roenving Novice
25. august 2001 - 14:17 #1
var maxNum = 81;
mitTal = Math.floor(Math.random()*81) + 1;
Avatar billede roenving Novice
25. august 2001 - 14:17 #2
var maxNum = 81;
mitTal = Math.floor(Math.random()* maxNum) + 1;
sæ\'fø\'li\'
Avatar billede 2cool4you Nybegynder
25. august 2001 - 14:18 #3
Kan jeg så bare skrive

function blabla(){
if(mitTal=56)
dit og dat
Avatar billede 2cool4you Nybegynder
25. august 2001 - 14:20 #4
mitTal kan godt være en hidden i stedet
og det der 81 kan jeg frit ændre ik\'

Avatar billede 2cool4you Nybegynder
25. august 2001 - 14:25 #5
matrandom returnerer et tal der enten er 0 eller 1
så for jeg ikke bare 81 eller 0 i hovedet
Avatar billede roenving Novice
25. august 2001 - 14:32 #6
>>14:18:59  Ja

>>14:20:46  mitTal er bare en javascript-variabel og kan ikke ses, hvis du ikke sætter den i et felt.
Ja!

>>14:25:14  Math.random leverer et double-precision tal (præcision ca. 15 cifre) mellem 0 og 1, det er derfor du skal gange med maxNum.

hth
jes
Avatar billede roenving Novice
25. august 2001 - 14:33 #7
btw, så kommer Math.floor (som fjerner evt. decimaler) *efter* at du har ganget ud!~]
Avatar billede 2cool4you Nybegynder
25. august 2001 - 14:34 #8
jeg tænkte lige på at når man skal pluse med en for at ikke at få nul skal maxNum så ikke også være en mindre for ikke at få 82
Avatar billede jakoba Nybegynder
25. august 2001 - 14:35 #9
Nær  roenvings svar virker fint.
Her genskriver jeg det lidt mere robust :-))

<script language=\'javascript\'>

var maxNum = 81;
var minNum = 1;          // lav om til egne værdier

function lavTal() {
    return Math.floor( ( Math.random()*(maxNum-minNum+1) ) +minNum );
}; //end lavTal()

</script>

Hvergang du kalder  lavTal()  får du et nyt tilfældigt nummer mellem 1 og 81.

<a href=\"java script:void( alert(lavTal() )\">test funktionen</a>

mvh JakobA
Avatar billede 2cool4you Nybegynder
25. august 2001 - 14:37 #10
roenving\'s virker tilsyneladene som den skulle,
men jeg har ikke testet jakobas
Avatar billede roenving Novice
25. august 2001 - 14:38 #11
>>2cool4you  25/08 2001 14:34:42 
Nej, for Math.random returnerer et tal *under* 1, max. ca. 0,999999999999999 ;-)
Avatar billede 2cool4you Nybegynder
25. august 2001 - 15:01 #12
jeg må sige at roenving havde det jeg skulle bruge
Avatar billede olebole Juniormester
26. august 2001 - 01:05 #13
<ole>
Må jeg spørge, hvorfor du ikke ønsker at bruge klokkeslettet? Math.random() er så dårlig en tilfældigheds generator, som de kommer!
Det kunne laves langt, langt gange bedre med \'new Date()\', som ville give en markant bedre statistisk fordeling. Ikke perfekt - men heller ikke så langt ude i skoven, som Math.random().
/mvh
</bole>
Avatar billede roenving Novice
26. august 2001 - 01:20 #14
>>ole
Med 81 forskellige, kan det heller ikke nå at gå galt for alvor, men selvfølgelig har du da ret, at bruge f.eks. de to sidste cifre i Milliseconds burde give en i praksis fuldstændig præcis fordeling.
Avatar billede olebole Juniormester
26. august 2001 - 02:31 #15
Jo, det går zq desværre nok alvorligt galt - alt afhængig af, hvad det skal bruges til. Store områder af de 81 tal, vil kun sjældent blive valgt med Math.random() - mens andre tal vil være kraftigt overrepræsenterede.
Dette må da kunne gøre det bedre:

<script language=\"JavaScript\">
  antal = 81; // Ændres efter behag
  nu = new Date();
  nu = nu.getTime().toString();
  rand = parseInt(nu.substring(nu.length-2));
  rand = Math.round((rand/100)*(antal-1));
  alert(rand);
</script>

/mvh

Avatar billede roenving Novice
26. august 2001 - 02:35 #16
Er den algoritme da så alvorlig gal (selv har jeg aldrig haft alvorlig brug for den) ?-|

Du kender den måske endda -- jeg ville da godt have en idé om den !~]
Avatar billede olebole Juniormester
26. august 2001 - 02:45 #17
Ja, den er slem og bør kun bruges, hvor fordelingen ikke er spor kritisk.
/mvh
Avatar billede olebole Juniormester
26. august 2001 - 02:47 #18
Prøv at lade den vælge mellem fem tal og lad den gøre det 100 gange. Notér så tallene og regn lidt på dem  =8-0
Avatar billede jakoba Nybegynder
27. august 2001 - 00:03 #19
Det ser da ret så ok ud. Noget nær hvad jeg forventede.

<HTML>
<HEAD><TITLE>Test af Javascripts Math.random() funktion.</TITLE>

<script language=\'javascript\'> <!--

function testIt ( frm ) {
    var N = parseInt( \"0\"+frm.max.value, 10 );
    if ( 0 >= N ) {
        N = 10;
        frm.max.value = N;
    }
    var kald = parseInt( \"0\"+frm.antal.value, 10 );
    if ( 0 >= kald ) {
        kald = 1000;
        frm.antal.value = kald;
    }
    var avg = kald/N;
    var udfald = new Array();
    var i;
    for ( i=0; N>i; i++ ) udfald[i] = 0;
    for ( i=1; kald>i; i++ )
        udfald[ Math.floor(Math.random()*N) ]++;
alert( udfald.toString() );
    tx = \"\";
    vari = 0
    for ( i=0; N>i; i++ ) {
        tx += \" (\" +i +\",\" +udfald[i] +\") \";
        vari += Math.abs(udfald[i]-avg);
    };
    frm.res.value = tx;
    frm.varians.value = (100*vari)/kald;
}; //end testIt

// --> </script>

<META NAME=\"Generator\" CONTENT=\"Stone\'s WebWriter 3\">
</HEAD>
<BODY>

<form name=\'testform\' onsubmit=\"return false\">
antal kald:<input name=\'antal\' type=\'text\' size=5 value=\"\">
udfald:<input name=\'max\' type=\'text\' size=2 value=\"\"><br>
&nbsp; <input name=\'doit\' type=\'button\' value=\"Test\" onclick=\"testIt(this.form)\">
<textarea name=\'res\' rows=5 cols=60 wrap=\'logical\'></textarea><br>
varians = <input name=\'varians\' type=\'text\' size=13 value=\"\">
</form>
<p> varians er udregnet som:<br>
&nbsp; &nbsp; (100 * summa( j=1..N; antal[j]-(kald/N) ))/kald

<!-- WebWriter AutoDato -->Opdateret: 27.8.2001<!-- WW -->
</BODY>
</HTML>

mvh JakobA
Avatar billede jakoba Nybegynder
27. august 2001 - 00:08 #20
jeg får: ( med 1000 kald, 10 udfald )  ca 10 tests.
IE4:  varians:  min 5.2%, max 10.9%
NS4:  varians:  min 5.5%, max 10.6%   
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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