2017-01-02 3 views
1

Ich versuche eine Zufallszahl zu generieren und habe eine Wahrscheinlichkeit von x%, um näher an den Maximalwert zu kommen.Zufallszahl mit Wahrscheinlichkeit

Problem ist, dass ich keine Ahnung habe, wie man das macht, es sei denn, ich mache einige Schritte?

sagen Let Ich werde eine Zufallszahl zwischen 1 und 3000.

$number = mt_rand(1, 3000) 

Dies wird zum Beispiel 2700 zurück erzeugen. Ich möchte, dass es näher bei 1 als 3000 ist.

Wie soll ich eine Funktion implementieren, die nur eine 10% Chance hat, in die Nähe von 3000 zu gelangen?

+0

Kannst du "fast 3000" erklären? ist es "zwischen 2500-3000" oder "2900-3000"? – Dekel

+0

Wahrscheinlicher, die kleinste mögliche Menge zu bekommen (sagen wir eine Strecke von 1-100) aber haben immer noch diese 10% Chance, nahe 3000 zu kommen (mit einer Strecke von 1000-3000). – Iulian

+0

Die Frage ist, wie teilen Sie die Bereiche ... was genau ist "in der Nähe von 3000" (Sie haben immer noch nicht beantwortet) – Dekel

Antwort

0

Anhand der Kommentare zu der Frage können Sie die Funktion mt_rand zweimal verwenden. Erst - zu überprüfen, ob es das 90% liegt (wobei der Wert zufällig von 1-100 ist), und wenn nicht - es ist das andere 10%, wobei der Wert von 1 bis 3000 ist zufällig:

$number = mt_rand(0, 9) == 0 ? mt_rand(1, 3000) : mt_rand(1, 100); 
+0

Großartige Idee. Vielen Dank. – Iulian

+0

Gern geschehen. Froh, dass ich helfen konnte! – Dekel