Seite 1 von 1

Zufallsberechnung positiv anstatt negativ?

Verfasst: Sa 07.Nov, 2009 13:59
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

Re: Zufallsberechnung positiv anstatt negativ?

Verfasst: So 08.Nov, 2009 17:24
von oxpus
Warum nicht so:

Code: Alles auswählen

$variation = 0 - $variation;

Re: Zufallsberechnung positiv anstatt negativ?

Verfasst: So 08.Nov, 2009 17:52
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

Re: Zufallsberechnung positiv anstatt negativ?

Verfasst: Mo 18.Jan, 2010 13:11
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