Random Probleem

Status
Niet open voor verdere reacties.

Jacob Sijsma

Gebruiker
Lid geworden
11 jul 2006
Berichten
6
Hallo mensen...

Ik probeer een callculator te maken voor een roleplay community.
Alleen loop ik tegen een probleem aan: de random functie.

Ik heb op google gezocht of ik een duidelijke uitleg kon vinden.
Deze heb ik niet gevonden.

Al dus, hier het interface:

Code:
<html> 
<head> 
<title> 
Callculator 
</title> 

<script type="text/javascript"> 

//Random function

</script> 

</head> 
<body bgcolor="Silver"> 
<center> 

<table border=3 BORDERCOLOR=Black bgcolor="Brown"> 
<tr> 
<td> 
<form> 
Minimum Damage <input size="20" type="text" id="MIN" value="10"><br> 
Maximum Damage <input size="20" type="text" id="MAX" value="100"> 
</form> 

<tr> 
<td> 
Damage Results <input size="20" type="text" id="GetRandom" value=""> 
</td> 
</tr> 

<tr> 
<td> 
<input type="button" value="Callculate" onclick="Callculate()"> 
</td> 
</tr> 


</table> 
</center> 
</body> 

</html>

Ik probeer hier een random getal binnen 2 input getallen te maken.
Heeft iemand een idee hoe dit moet ?.
 
Voor een random getal gebruik je Math.random() dat geeft een waarde van 0 tot 1 (het kan wel precies 0 zijn maar niet precies 1, niet tot-en-met dus).
PHP:
var getal = Math.floor(Math.random() * (MAX - MIN + 1)) + MIN;


Vr.Gr. Egel.
 
Ik heb dit al vaak gezien op het internet, maar ik weet niet hoe ik min en max mijn input variable's maak.
 
Op die manier. :)

Het kan via een id: document.getElementById('idnaam').value

Maar met een formulier is document.formnaam.veldnaam.value wat mooier:
PHP:
<script type="text/javascript">
 function calculate() {
  var f = document.formnaam;
  var min = parseInt(f.min.value);
  var max = parseInt(f.max.value);
  f.rnd.value = Math.floor(Math.random() * (max - min + 1)) + min; 
  };
</script>

<form name="formnaam" onsubmit="return false;">
 Minimum Damage <input size="20" type="text" name="min" value="10"><br>
 Maximum Damage <input size="20" type="text" name="max" value="100"><br>
 Damage Results <input size="20" type="text" name="rnd" value=""><br>
 <input type="button" value="Calculate" onclick="calculate()">
</form>
parseInt() zorgt ervoor dat de waarde van het textveld wordt omgezet in een getal. Anders kun je verrassingen krijgen als 10 + 1 = 101 :)


Vr.Gr. Egel
 
Cool, het werkt!... Ik probeer de code wat beter te begrijpen zodat ik er aanpassingen in kan maken.

Bedankt voor de moeite.

Ik weet dat math.floor een integer getal maakt maar ik begrijp f.rnd.value = Math.floor(Math.random() * (max - min + 1)) + min; dit niet zo goed, waarom + 1 op het eind ?.

Weet je mischien een goeie tutorial waarin dat wordt uitgelegd ?.
 
Laatst bewerkt:
Ik weet dat math.floor een integer getal maakt maar ik begrijp f.rnd.value = Math.floor(Math.random() * (max - min + 1)) + min; dit niet zo goed, waarom + 1 op het eind ?.
Omdat het min tot en met max is.

Bijv, min 1 en max 6, een dobbelsteen. Dan heb je 6 verschillende waarden: 6 - 1 + 1 = 6

Math.random() geeft een waarde van 0 tot 1, zeg maar 0 t/m 0.999 Vermenigvuldigt met 6 geeft 0 t/m 5.999 Daarbij 1 optellen: 1 t/m 6.999 en dat afgerond naar beneden geeft 1 t/m 6 (gehele getallen) met evenveel kans voor elk getal.


Als je nog niet zo bekend bent met javascript is dit wel een goede cursus:
http://www.ivobrugge.be/cursusweb/indexframes.asp?cursus=Javascript

Met interactieve voorbeelden:
http://www.ivobrugge.be/cursusweb/voorbeeld.asp?pagina=Javascript/vb/math1.html


Vr.Gr. Egel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan