Zufallszahl warscheinlichkeitsbereich beeinflussen.

07/28/2010 23:23 njomnjomnjom#1
Gehen wir davon aus ich möchte eine Zufallszahl generieren welche innerhalb einer gewissen Zahlenmenge liegt.
Innerhalb dieser Zahlenmenge soll aber eine Zahlenmenge sein welche doppelt so häufig auftritt wie die Restmenge, wie bewerkstellige ich dies?


Also ich erschaffe eine Zufallszahl zwischen 1 und 4
Code:
var x;
x = Random(1, 4);
So.
Jetzt sollen aber die Ergebnisse 2 und 3 doppelt so häufig auftreten wie die Ergebnisse 1 und 4

Wenn ich jetzt folgende Bedingung stelle:
Code:
var x;
x = Random(1, 4);
if(x < 2 || x > 3)
{
x = Random(1, 4);
}
Wird der Wert soffort zugelassen, sobald eine 2 oer eine 3 entsteht. Entsteht aber eine 1 oder 4 wird nocheinmal gewürfelt.

In meinen Augen Ist das Endergebniss nun mit doppelter chance 2 oder 3 und nur mit einfacher chance 1 oder 4.

Mache ich gerade einen Denkfehler?

So sagen wir nun ich habe die Zahlen -3 bis 3:
0 Soll mit 4 facher warscheinlichkeit auftreten.
-1 und 1 Soll mit 3 facher warscheinlichkeit auftreten.
-2 und 2 Soll mit 2 facher warscheinlichkeit auftreten.
-3 und 3 Soll mit 1 facher warscheinlichkeit auftreten.

Wie soll ich soetwas bewerkstelligen ohne 200 zeilen quelltext hinzuklatschen *übertreib*


Freue mich auf Hilfe.
07/29/2010 16:25 njomnjomnjom#2
Influence the chances for each number while creating random Numbers


Let's say i want to create a Random Number which is located between 2 spesific numbers.
Within this Range of specific numbers some Numbers shall have a higher chance of beeing the result than the rest of the Numbers.


OK i create a Number between 1 and 4
Code:

Code:
var x;
x = Random(1, 4);
Done.
Now i want that the Result 2 or 3 appear twice as often as the result 1 or 4

Let's say i use this if-function:
Code:

Code:
var x;
x = Random(1, 4);
if(x < 2 || x > 3)
{
x = Random(1, 4);
}
Like this the result is automatically confirmed, if it's a 2 or a 3. If a 1 or 4 appears the Randomizing proces is repeated..

In my opinion The Numbers 2 and 3 have now twice the chance to be the result. 1 and 4 only have 1 chance.

Am i completely wrong? Is my brain makeing a mistake?


Let's say i have Numbers between -3 and 3 now:
0 shall appear with 4 times the chance of the others
-1 and 1 shall appear with 3 times the chance of the others
-2 and 2 shall appear with 2 times the chance of the others
-3 and 3 shall appear with a single chance

How shall i manage this without 200 lines of code???

Please help me ^^.
07/30/2010 19:46 njomnjomnjom#3
Vielen Dank an banjo1, der mit mit seinem php code den richtigen Ansatz geliefert hat.

kann geschlossen werden

Code:
var x;
var y;
var z;
var _banjo1;

While(1)
{
	x = 0
	y = 0
	z = 0

	_banjo1 = Random(0, 6);

	if(_banjo1 == 0)
		x = 1;

	else if(_banjo1 >= 1 && _banjo1 <= 2)
		y = 1;

	else if(_banjo1 >= 3 && _banjo1 <= 6)
		z = 1;

	if(x == 1)
		//Ereigniss mit 1 facher Warscheinlichkeit;

	else if(y == 1)
		//Ereigniss mit 2 facher Warscheinlichkeit;

	else if(z == 1)
		//Ereigniss mit 3 facher Warscheinlichkeit;

}
oder

Code:
var x;
var _banjo1;

While(1)
{
	x = 0

	_banjo1 = Random(0, 6);

	if(_banjo1 == 0)
		x = 1;

	else if(_banjo1 >= 1 && _banjo1 <= 2)
		x = 2;

	else if(_banjo1 >= 3 && _banjo1 <= 6)
		x = 3;

	if(x == 1)
		//Ereigniss mit 1 facher Warscheinlichkeit;

	else if(x == 2)
		//Ereigniss mit 2 facher Warscheinlichkeit;

	else if(x == 3)
		//Ereigniss mit 3 facher Warscheinlichkeit;

}
So siehts momentan aus.


[Edit:]
Verflixt ich vergesse in letzter Zeit andauernd, dass es einen Edit Button gibt, sorry für den ungewollten Bump.
hmm bei den letzten else if hätte ich auch einfach else nehmen können.