[php] gewogen random

Pagina: 1
Acties:

  • jurriaan
  • Registratie: Januari 2000
  • Laatst online: 24-06 02:04
Ik wil een randomwaarde uit een array hebben, maar die random-waarde moet wel gewogen worden.

Het gaat om geldprijzen, 1,2,5,10,20 of 50. Die hebben een gewicht 1/10,1/20,1/100,1/2000,1/5000 verder staat het niet vast dat je iets wint.

In 1000 trekkingen mag max. 100 gewonnen worden, en de prijs van 50 mag er maar 1x per 5000 trekkingen uitgaan.

Ik heb geen idee hoe je dit op de beste manier zou kunnen aanpakken. Op dit moment lijkt mij een gewogen random keuze het beste. Maar hoe?

Wees verantwoordelijk voor je eigen daden


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Maak een array aan met alle mogelijke prijzen
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
srand ((float) microtime() * 10000000);
$array=array(1,1,1,2,2,3);
$rand_keys = array_rand ($input, count($array));
echo $array[$rand_keys[0]];
echo $array[$rand_keys[1]];

.
.
.
?>

Programmer - an organism that turns coffee into software.


  • jurriaan
  • Registratie: Januari 2000
  • Laatst online: 24-06 02:04
dat is array_rand, maar die functie is niet gewogen

Wees verantwoordelijk voor je eigen daden


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op woensdag 23 januari 2002 15:07 schreef jurriaan het volgende:
dat is array_rand, maar die functie is niet gewogen
in de $array zet je alle prijzen neer.

dus
$array=array(100,50,50,20,20,20,10,10,10,10);

dus 1 prijs van 100
2 van 50
3 van 20
4 van 10

Programmer - an organism that turns coffee into software.


Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
srand((double)microtime()*1000000);
$id=rand(0, +1);
$prijs = array();
$prijs[0]="prijs1";
$prijs[1]="prijs2";
$gewicht = array();
$gewicht[0]="1 kilo";
$gewicht[1]="2 kilo";
print("De prijs is: $prijs[$id].<br>Het gewicht hiervan is: $gewicht[$id].")
?>

Zoiets bedoel je?

  • jurriaan
  • Registratie: Januari 2000
  • Laatst online: 24-06 02:04
in de $array zet je alle prijzen neer
Het gaat om 1000 trekkingen..
En nee, ik bedoel niet het letterlijke gewicht :)

Wel bedankt voor de moeite natuurlijk allebei!

Wees verantwoordelijk voor je eigen daden


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op woensdag 23 januari 2002 15:48 schreef jurriaan het volgende:

[..]

Het gaat om 1000 trekkingen..
En nee, ik bedoel niet het letterlijke gewicht :)

Wel bedankt voor de moeite natuurlijk allebei!
Je moet toch een keer opgeven hoe vaak een bepaalde prijs mag voor komen, dat het in een array staat moet in principe nix uitmaken.

Misschieen paar functies maken om die array te maken?

Programmer - an organism that turns coffee into software.


  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 15-09 17:44

Knutselsmurf

LED's make things better

Je kunt toch ook het volgende doen:

als random <0.0001 dan 'gefeliciteerd, je hebt 100 euro gewonnen'
anders als random <0.1 dan 'gefeliciteerd met je 10 euro'

- This line is intentionally left blank -

Pagina: 1