Zufallsberechnung positiv anstatt negativ?

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Zufallsberechnung positiv anstatt negativ?

Beitrag von Dungeonwatcher »

Hi :cool:

Ich versuche gerade für den Vault Mod ein System zu erschaffen um einen automatischen Börsencrash zu verursachen. Dazu habe ich mir 2 Variablen erschaffen, welche die max., min. (Vergleichswert) und aktuellen Preise (Index) in ein Verhältnis setzen. D.h. wenn der Index größer gleich dem Vergleichswert ist, soll es crashen. Das funktioniert auch bestens. Nur leider explodieren die Preise förmlich anstelle zu fallen. :eek:

Was mache ich in folgendem Code falsch:

Code: Alles auswählen

	for($i = 0; $i < count($exchange); $i++)
	{
		if ( $vault_general['stock_min_change'] > $vault_general['stock_max_change'] )
		{
			$vault_general['stock_min_change'] = $vault_general['stock_max_change'];
		}
		$variation = mt_rand($vault_general['stock_min_change'] , $vault_general['stock_max_change']);
		$hazard = mt_rand(1,2);
		if ( $hazard == '2' )
		{
			$variation = - $variation ;
		}
		$new_price = round((($exchange[$i]['stock_price'] + 1) * ( 1 + ( $variation / 100 ))), 2);
		$old_price = $exchange[$i]['stock_price'];
		$best_price = ( $new_price > $exchange[$i]['stock_best_price'] ) ? $new_price : $exchange[$i]['stock_best_price'];
		$worst_price = ( $new_price < $exchange[$i]['stock_worst_price'] ) ? $new_price : $exchange[$i]['stock_worst_price'];

		$sql = "UPDATE " . VAULT_EXCHANGE_TABLE ."
			SET stock_price = $new_price ,
			stock_previous_price = $old_price ,
			stock_best_price = $best_price ,
			stock_worst_price = $worst_price
			WHERE stock_id = ".$exchange[$i]['stock_id'];
		$result = $db->sql_query($sql);
		if( !$result )
		{
			message_die(GENERAL_ERROR, "Couldn't update stock exchange", "", __LINE__, __FILE__, $sql);
		}
		
		// --- Börsencrash - Start ---

		if ( $stock_price_avg >= $stock_avg )
		{
			$variation = mt_rand($vault_general['stock_min_change'] , $vault_general['stock_max_change']);
			$variation = - $variation ;
			$new_price = round((($exchange[$i]['stock_price'] + 5) * ( 5 + ( $variation / 100 ))), 2);
			$old_price = $exchange[$i]['stock_price'];
			$best_price = ( $new_price > $exchange[$i]['stock_best_price'] ) ? $new_price : $exchange[$i]['stock_best_price'];
			$worst_price = ( $new_price < $exchange[$i]['stock_worst_price'] ) ? $new_price : $exchange[$i]['stock_worst_price'];

			$sql = "UPDATE " . VAULT_EXCHANGE_TABLE ."
				SET stock_price = $new_price ,
				stock_previous_price = $old_price ,
				stock_best_price = $best_price ,
				stock_worst_price = $worst_price
				WHERE stock_id = ".$exchange[$i]['stock_id'];
			$result = $db->sql_query($sql);
			if( !$result )
			{
				message_die(GENERAL_ERROR, "Couldn't update stock exchange", "", __LINE__, __FILE__, $sql);
			}
		}
		// --- Börsencrash - Ende ---
	}
Mit der Variable

Code: Alles auswählen

$variation = - $variation ;
im Bereich Börsencrash sollte eigentlich alles im negativen Bereich berechnet werden und die Preise entsprechend fallen. Wo ist mein Denkfehler?

Bye
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Zufallsberechnung positiv anstatt negativ?

Beitrag von oxpus »

Warum nicht so:

Code: Alles auswählen

$variation = 0 - $variation;
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Re: Zufallsberechnung positiv anstatt negativ?

Beitrag von Dungeonwatcher »

oxpus hat geschrieben:Warum nicht so:

Code: Alles auswählen

$variation = 0 - $variation;
Hmmm, dann wird der Wert von Null abgezogen und ist dann definitiv negativ. Das sollte eigentlich funktionieren. Ich teste das nachher (nach 21:00 Uhr) gleich aus.

Nachtrag:

Jou, das funktioniert bestens. THNX
MADxHAWK
Beiträge: 132
Registriert: Mi 15.Nov, 2006 13:40
Wohnort: Bonn
Kontaktdaten:

Re: Zufallsberechnung positiv anstatt negativ?

Beitrag von MADxHAWK »

Hi,

einfachster weg eine negative in eine positvie zahl, oder auch umgekehrt, zu verwandeln ist die multiplikation mit -1

Code: Alles auswählen

$variation = $variation * (-1);
Gruss
Martin
Antworten