Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  7 1238
Se på denne koden:

HTML-kode

<?php

$tall = 55000;
$loop = 0;
$random_max = 10000;

while($loop < $tall)
	{
	$random = rand(1, $random_max);
	$nummer = $nummer + $random;
	$loop++;
	}

$nummer = $nummer / $tall;
$nummer = round($nummer, 0);
echo $nummer;
$kontroll = $random_max / 2;
echo $kontroll;

if(!$nummer == $kontroll)
	{
	echo "Verden kommer til gå under!";
	if(isset($_GET[feil]))
	{
	$_GET[feil]++;
	$_GET[ant]++;
	
	echo '<meta http-equiv="Refresh" content="3; url=lek.php?feil='.$_GET[feil].'&ant='.$_GET[ant].'">';
	}
	else
	{
	echo '<meta http-equiv="Refresh" content="3; url=lek.php?feil=1">';
	}
	}
	else
	{	
	$_GET[ant]++;
	echo "Random tall er, ja nettopp, tilfeldig!";
	echo '<meta http-equiv="Refresh" content="3; url=lek.php?feil='.$_GET[feil].'&ant='.$_GET[ant].'">';
	}	

?>
Denne koden er designet for å sjekke om randomkoden i PHP faktisk er random. Problemet er at if(!$nummer == $kontroll) alltid blir true, det er en ond sirkel, og det burde absolutt ikke skje. Hjelp?
pseudo (falsk, uekte) random it is...
http://www.urbandictionary.com/define.php?term=pseudo
Sist endret av VivaLatrina; 10. januar 2009 kl. 14:06.
Sitat av VivaLatrina Vis innlegg
pseudo (falsk, uekte) random it is...
http://www.urbandictionary.com/define.php?term=pseudo
Vis hele sitatet...
Hva i huleste himmelens navn skal det der bety?
Sitat av Darkness123 Vis innlegg
Hva i huleste himmelens navn skal det der bety?
Vis hele sitatet...
at du genererer et pseudo random tall, altså ikke et helt random tall, men et tall som blir beregnet utifra en mengde andre ting, som heller ikke er helt random...
http://www.google.no/search?q=pseudo...ient=firefox-a

EDIT: her står det at det faktisk er pseudo-random
Sist endret av VivaLatrina; 10. januar 2009 kl. 14:20.
Med psuedo random så menes det at tallet avhenger av så mange faktorer at det er tilnærmet umulig å vite hva det endelige tallet ble. Det er rett og slett for mange "tilfeldige" faktorer som spiller inn.
En data kan ikke bare finne opp et random tall, den må gå etter en formel.
Jeg tror faktisk Darkness vil ha svar på hvorfor koden ikke virker heller enn å få vite at random ikke er random...
m0b
m0b's Avatar
DonorAdministrator
Nå er PHP et såpass ukritisk språk at det tillater deg å gjøre allskens humbug uten at den forteller et kvekk til deg om at du er riv ruskende gal.

Først og fremst så henviser du til $nummer i en if-statement. $nummer er i dette tilfellet ute av scope. Du har altså initialisert og deklarert variabelen $nummer i et scope som er utenfor rekkevidde av if-statementet ditt. Så idet du sjekker i dette tilfellet, kan det godt hende at du initialiserer det, hvem vet.

I tillegg til dette, etter $nummer deklarasjonen din å bedømme så er variabelen av type integer eller tilsvarende verdi. Så med dette i minnet, må du tenke på hva i alle dager for en condition du har satt opp i if-statementet. Du utfører en boolean-operasjon på en integer variabel? Altså gir !$nummer ingen mening i denne sammenhengen, i alle fall ikke når du sammenligner med == mot en annen variabel. Man kan etter php sin slepphendthet tolke conditionen din til 'hvis ikke nummer er lik nummer', som stort sett alltid bør bli true med mindre du er heldig.

Dessuten ser jeg ikke helt hva programsnutten din har med å sjekke tilfeldighet. Gå igjennom php-kildekoden for funksjonen rand() og se hva som faktisk gjøres for å produsere tallet, og gå derifra.