[php] Kans rekenen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo mensen,

Ik zit met een nogal lastig probleempje waar ik zelf niet uit kom en waarover ik nergens wat kan vinden. :'( Het zit zo:

Ik wil een scriptje maken waarbij een random getal gepakt word, tussen de 0 en de 1. De slimme mensen onder ons merken al op dat het getal dan alleenmaar 1 of 0 kan zijn ;)

Maar nu wil ik "iets" maken waarbij je de kans kunt opgeven dat het getal 1 wordt. Dat je dus van te voren kunt bepalen dat je bijv. 80% kans hebt dat het getal 1 wordt.

Na veel gedoe zou het wel moeten lukken denk is, maar dan moet het getal (het percentage) ook nog eens via een variabele gegeven kunnen worden.. :/ Dan lukt 't me helemaal voor geen meter meer..!

Misschien dat hier wat mensen rondzwerven die nogal goed in puzzellen zijn, en me hierbij kunnen helpen..

Alvast th@nx.

--Edit--
Nog even voor de duidelijkheid.. het gaan hierbij om PHP ;)

[ Voor 9% gewijzigd door Verwijderd op 26-04-2003 16:23 ]


Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

if rnd() > 0.80
then
var = 1;
else
var = 0;
end if;

Who is John Galt?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erm.. bedankt voor de snelle reactie, maar als ik me niet vegis is dat van u geen php.. :/

Acties:
  • 0 Henk 'm!

  • blackd
  • Registratie: Februari 2001
  • Niet online
Dan maak je dat er toch van? is niet zo heel moeilijk.

9000Wp o/w SolarEdge SE6K - Panasonic 5kW bi-bloc - gasloos sinds 17-7-2023


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 13-09 21:40
Verwijderd schreef op 26 April 2003 @ 16:19:
Hallo mensen,

Ik zit met een nogal lastig probleempje waar ik zelf niet uit kom en waarover ik nergens wat kan vinden. :'( Het zit zo:

Ik wil een scriptje maken waarbij een random getal gepakt word, tussen de 0 en de 1. De slimme mensen onder ons merken al op dat het getal dan alleenmaar 1 of 0 kan zijn ;)

Maar nu wil ik "iets" maken waarbij je de kans kunt opgeven dat het getal 1 wordt. Dat je dus van te voren kunt bepalen dat je bijv. 80% kans hebt dat het getal 1 wordt.

Na veel gedoe zou het wel moeten lukken denk is, maar dan moet het getal (het percentage) ook nog eens via een variabele gegeven kunnen worden.. :/ Dan lukt 't me helemaal voor geen meter meer..!

Misschien dat hier wat mensen rondzwerven die nogal goed in puzzellen zijn, en me hierbij kunnen helpen..

Alvast th@nx.
Je laat de computer een getal trekken tussen de 0 en de 100.
Als het getal groter is dan 80, dan is 't 0. Als het kleiner is dan 80, is het 1.

maw:

PHP:
1
2
3
4
5
6
7
8
9
10
var $randomGetal //maak random getal tussen 0 en 100, zoek maar uit
var $kans    //het aantal %kans dat het 1 moet zijn
if($randomGetal > $kans)
    {
    $randomGetal = 0
    }
else
    {
    $randomGetal = 1
    }

Verbouwing


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 11-09 11:19

chem

Reist de wereld rond

Verwijderd schreef op 26 April 2003 @ 16:23:
Erm.. bedankt voor de snelle reactie, maar als ik me niet vegis is dat van u geen php.. :/
zeg hallo, een beetje inzicht wordt er wel van je verwacht hoor.

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

chem schreef op 26 april 2003 @ 16:27:
zeg hallo, een beetje inzicht wordt er wel van je verwacht hoor.
Misschien heeft php geen if functionaliteit :+

Who is John Galt?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jullie voorbeelden snap ik wel.. werken ook perfect, maar het gaat erom dat het percentage in een $var gezet moet kunnen worden. Het percentage is dus telkens weer anders. Ook is het zo dat als bijv. de kans op nul 70% is, dat er nog steeds een kans is dat het getal geen nul is maar een 1.

Ik zal even uitleggen wat ik er namelijk mee wil gaan doen, misschien wordt het dan wat duidelijker:

Het is bedoeld voor een soort van "war game". Een aanvaller attackt een andere persoon. PHP beoordeeld uiteindelijk de uitslag, welke de strijd gewonnen heeft. De aanvaller beschikt over een winkans (percentage tussen 0 en 100%). Een aanvaller met 80% is dus sterker dan een aanvaller met 50% (50% lijkt me standaard). De winkans van de aangevallen persoon doet er even niet toe.
PHP gaat de uitslag van de strijd berekenen d.m.v. een random getal van 1 (gewonnen) of 0 (verloren) voor de aanvaller. Als de aanvaller beschikt over een winpercentage van 80% moet de kans op een 1 dus 80% zijn, maar dat wil niet zeggen dat deze ook daadwerkelijk wint..! Er is immers nog steeds 20% kans op verliezen (een 0).
De winpercentage staat vast in de database bij het profiel van de aanvaller. Eens in de zoveel tijd worden de percentages iets verhoogd (daarvoor heb ik al wat gemaakt) tot het limiet van 90% winkans is bereikt.

Hopelijk dat jullie nu begrijpen wat ik bedoel, en wat ik er mee wil.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik was ff aan het denken en ik wil het je niet onthouden...
Zolang je getal schommelt tussen 0 en 1 is er geen probleem maar als je random getal bv tien wordt dan hebben 0 en tien zowiezo minder kans want 8,5 en 9,4999 worden negen en 9,5 tot 10 worden maar 10! idem voor 0.

Acties:
  • 0 Henk 'm!

Verwijderd

Lijkt mij niet zo moeilijk om 0.80 in een $var te stoppen. Ik zou eens eerst beginnen te leren hoe je een variable kan declareren....dat is wel een van de elementaire dingen bij programmeren.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Volgens mij heb ik een mogelijkheid gevonden! Ik kreeg via een topic op PHPFreakz dit voorgezet:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?  $kansopeen = 80; 
    $randomgetal = rand(0,100); 
    if($radomgetal > (100-$kansopeen)) {  
       $uitkomst = 1; 
    } else { $uitkomst = 0; } 
?> 

of compact: 

<?  $kansopeen = 80; 
    if(rand(0,100)<$kansopeen) $uitkomst=0 else $uitkomst=1; 
?>


Volgens mij is dit wel een aardig goede manier :) .

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Verwijderd schreef op 26 April 2003 @ 16:45:
Volgens mij heb ik een mogelijkheid gevonden! Ik kreeg via een topic op PHPFreakz dit voorgezet:

[...]

Volgens mij is dit wel een aardig goede manier :) .
Dat is precies wat hier ook wordt voorgesteld; alleen bij ons mag je zelf nadenken; ipv dat alles wordt voorgekauwt ;)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 13-09 21:40
Dat is precies wat ik heb neergezet in correct PHP. Dank u.

Verbouwing


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
Verwijderd schreef op 26 April 2003 @ 16:45:
Volgens mij heb ik een mogelijkheid gevonden! Ik kreeg via een topic op PHPFreakz dit voorgezet:
<? $kansopeen = 80;
if(rand(0,100)<$kansopeen) $uitkomst=0 else $uitkomst=1;
?>
[/php]

Volgens mij is dit wel een aardig goede manier :) .
Mja, dat is dus een foutieve variant op de algemene oplossing die justmental al gaf. Foutief, omdat je een bereik van 101 getallen hebt (0 tot en met 100) terwijl je er voor de juiste verdeling 100 nodig hebt. Bedenk nu zelf welke grens je aan moet passen (min of max?) en waarom. :P

Zelfs de compacte versie kan trouwens wat korter (en helderder, naar mijn mening):
PHP:
1
2
$kans = 80; 
$uitkomst = (rand(0,100) < $kans) ? 0 : 1;

De hele conditionele expressie (? 0 : 1) kan trouwens achterwege blijven als je je uitkomst gewoon als een boolean variable opslaat (wat logisch zou zijn omdat je wilt aangeven of 'wel' of 'niet' gewonnen is).

En ja, ik heb met opzet ook in mijn code de fout laten zitten.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mithrandir schreef op 26 April 2003 @ 17:32:
Dat is precies wat ik heb neergezet in correct PHP. Dank u.
Haha, nu zie ik het inderdaad.. nou, jij dan ook bedankt! Al zag ik het niet meteen :)
Pagina: 1