random mit zufälligen array

JesusFreak777

Erfahrenes Mitglied
hallo,

ich suche nach informationen tutos und ähnlichen wie ich folgendes realisieren kann,...

ich hab zwei werte:

$order = "x"; \\x ist entweder 1, 2, 3 oder 4
und
$points = "y"; \\y ist entweder 1, 2 oder 3

ich würde ich gerne als erstes ein array erstellen, in dem array sollen sein

PHP:
if($order == "1")
{
$other1 = "2";
$other2 = "3";
$other3 = "4";
}
elseif($order == "2")
{
$other1 = "1";
$other2 = "3";
$other3 = "4";
}
elseif($order == "3")
{
$other1 = "1";
$other2 = "2";
$other3 = "4";
}
elseif($order == "4")
{
$other1 = "1";
$other2 = "2";
$other3 = "3";
}


if($points == 1)
{
$order = 7 - 11 mal im array vergeben
$other1 = 1 - 5 mal im array vergeben
$other2 = 1 - 5 mal im array vergeben
$other3 = 1 - 5 mal im array vergeben
}
elseif($points == 2)
{
$order = 5 - 9 mal im array vergeben
$other1 = 1 - 5 mal im array vergeben
$other2 = 1 - 5 mal im array vergeben
$other3 = 1 - 5 mal im array vergeben
}
elseif($points == 3)
{
$order = 3 - 7 mal im array vergeben
$other1 = 1 - 5 mal im array vergeben
$other2 = 1 - 5 mal im array vergeben
$other3 = 1 - 5 mal im array vergeben
}

im endeffekt soll dann das array z.B. so ausseshen:
$order = 3;
$points = 2;

Code:
array(2, 2, 2, 2, 2, 2, 1, 1, 1, 3, 4, 4)

jetzt möchte ich aus dem array hundert mal eine zahl picken,...
das ergebniss müsste dann sein:

Code:
27 x 1
42 x 2
13 x 3
18 x 4

geht das?
kann man das evtl sogar noch einfacher machen?
wie realisiere ich das?

Danke
Gruß Simon
 
Zuletzt bearbeitet:
Das Erste kannst du mit der array_diff()-Funktion erzielen, beispielsweise:
PHP:
array_diff(array(3), array(1, 2, 3, 4))
Das Zweite verstehe ich allerdings nicht ganz. Aber vielleicht hilft dir [post=1363382]diese getRandElement()-Funktion[/post] weiter.
 
hm entweder ich habs falsch erklärt oder ich habs falsch verstanden,...

also als erstes hab ich ne ausgabe:

$order
$other1
$other2
$other3

$other ist immer ein bis fünf mal imm array vorhanden,....
$order ist eine variable die entweder 3-7; 5-9 oder 7-11 mal im array vorhanden,...

das heißt es ist ne warscheinlichkeit gegeben das $order öfters vorkommt



des weiteren wenn ich jetzt mein array habe mit z.B. 9 mal $order drinnen, 3 mal $other1, 2 mal $other2 und 5 mail $other3, roll er 100 mal sich ne zufallszahl holn und mir ausgeben wie oft er:
$order
$other1
$other2
$other3
ausgewählt hat,....

jetzt verständlicher gewesen, oder hab ich nur die antwort net verstanden?
 
Also ich nicht....
Zeig mal die <pre>-Formatierte print_r() ausgabe deiner Arrays und erkläre es damit bitte erneut.
 
hm es existiert eigentlich noch garnichts,...

momentan sieht das script so aus:

PHP:
$order = "2";
$points = "2";


echo "order ".$order;
echo "<br>";
echo "points ".$points;
echo "<br>";
echo "<br>";
echo "<br>";


if($order == "1")
{
$other1 = "2";
$other2 = "3";
$other3 = "4";
}
elseif($order == "2")
{
$other1 = "1";
$other2 = "3";
$other3 = "4";
}
elseif($order == "3")
{
$other1 = "1";
$other2 = "2";
$other3 = "4";
}
elseif($order == "4")
{
$other1 = "1";
$other2 = "2";
$other3 = "3";
}


if($points == 1) 
{ 
$order = "7 bis 11 x ".$order;
$other1 = "1 bis 5 x ".$other1;
$other2 = "1 bis 5 x ".$other2;
$other3 = "1 bis 5 x ".$other3;
} 
elseif($points == 2) 
{ 
$order = "5 bis 9 x ".$order;
$other1 = "1 bis 5 x ".$other1;
$other2 = "1 bis 5 x ".$other2;
$other3 = "1 bis 5 x ".$other3;
} 
elseif($points == 3) 
{ 
$order = "3 bis 7 x ".$order;
$other1 = "1 bis 5 x ".$other1;
$other2 = "1 bis 5 x ".$other2;
$other3 = "1 bis 5 x ".$other3;
}

die oberen zwei werte $order können einen wert von 1-4 inbehalten und $points dann den wert 1-3 entsprechen,...

letztendlich möchte ich eine ausgabe von:
zufällig mit warscheinlichkeit & wert
------------------ 27 ------------------ & $other1
------------------ 42 ------------------ & $order
------------------ 13 ------------------ & $other2
------------------ 18 ------------------ & $other3

die warscheinlichkeit das $order eine höhere ausgegebene zahl ist liegt daran das ich gerne alle werte ($other1-3 zwischen 1 und 5 mal ins array schreiben möchte, die 1-5 werden per zufall ausgegeben) und $order wenn points 1; 7-1 mal,...

das array in dem dann die einzelnen zahlen geschrieben werden, existiert noch nicht,... ich weiß auch nicht wie man sowas macht

*HELP*
 
Eine Formatierte Ausgabe eines Arrays sieht so aus:
Code:
Array
(
    [a] => Apfel
    [b] => Banane
    [ c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)
 
Vielleicht erzählst du uns einfach was du vorhast?
Ich kann mit dem, was du erzählst irgendwie überhaupt nichts anfangen.
 
ok:

also ich hab ein quiz:

bei dem gibt es einen joker der mit einer KI verbunden ist,....

die KI soll das jetzt werden,...

zuerst soll die KI schauen wie schwer ist die Frage $points = 1 - 3 (1 ist leicht 3 ist schwer) je leichter die frage ist desto sicherrer soll die antwort richtig sein.

als nächstes findet die KI raus welches die richtige antwort ist $order, antwort a ist 1 antwort b ist 2,...


am schluss soll eine tabelle ausgegeben werden in der es 100 punkte gibt
die punkte teilen sich Antwort a --> b --> c --> d in der warscheinlichkeit soll die richtige antwort höhere changen haben zu gewinnen als die anderen .

damit das so ist möchte ich ein array aufziehen indem ein pool von möglichkeiten drinnen ist, die möglichkeiten werden per zufall ins array geschrieben, das heißt 3 mal antwort a 2 mal antwort b 7 mal antwort c und 1 mal antwort d

jetzt nehm ich einfach einen zufallsgenerator her und hol mit aus dem array 100 mal zahlen diese 100 mal ergeben dann wie oft a wie oft b,...

jetzt verständlicher?

sorry wg. meiner undeutlichen ausdrucksweiße



PS. feinabstimmung ist erst möglich wenn das ganze mal so ca. funktioniert
 
Jetzt verstehe ich was du meinst.
PHP:
$order = 2;
$points = 2;

$values = array(1, 2, 3, 4);
$prioArray = array(rand(1, 5), rand(1, 5), rand(1, 5), rand(1, 5));
if ($points == 1) {
	$prioArray[$order-1] = rand(7, 11);
} else if ($points == 2) {
	$prioArray[$order-1] = rand(5, 9);
} else if ($points == 3) {
	$prioArray[$order-1] = rand(3, 7);
}
$prioParam = implode(':', $prioArray);
$randValues = array();
for ($i=0; $i<100; $i++) {
	$randValues[] = getRandElement($values, $prioParam);
}
var_dump($randValues);
 
Zurück