Hej! Skulle det vara möjligt att "bygga en kortlek i asp". Jag skulle vilja t.ex. räkna ut i black-jack hur stor sannolikheten är att banken får 20. Det är ju inte så svårt att "göra korten" (lägga in dem som variabler), men jag har inte kommit på något bra sätt att räkna ut sannolikheten. Går detta?
Med denna kod jag just slängde ihop så fortsätter banken till den antingen kommit till 17 eller blivit "fet".
Hur man räknar ut sannolikheten vet jag inte... :)
<%
Function RndCard(aDeck)
Randomize
RndCard = aDeck(Round(Rnd*Ubound(aDeck,1)),Round(Rnd*Ubound(aDeck,2)))
End Function
Dim aDeck(3,13)
aColors = Array("Hjärter","Spader","Ruter","Klöver")
aValues = Array("1","2","3","4","5","6","7","8","9","10","Knekt","Dam","Kung","Ess")
'Skapar färger
For i = Lbound(aColors) To Ubound(aColors)
'Skapar valörer
For j = Lbound(aValues) To Ubound(aValues)
aDeck(i,j) = j
Next
Next
intVal = 0
Do While intVal < 22
intVal = intVal + RndCard(aDeck)+1
Response.Write intVal & "<br>"
If intVal > 16 Then Exit Do
Loop
%>
------------------ Vide rox = new Vide();
rox.learn("C#"); webeye.nu
Tack så mycket för Koden Vide. Nu är jag inte så när som så bra som du på ASP, och jag klarar med nöd och neppe att förstå koden. Några frågetecken finns där. Vad räknar Arrayen för värden på Knekt, Dam, Kung och Ess. Värdena ska ju vara tio resp. 1 eller 11. Räknar inte arrayen Knekt som 11, Dam som 12 osv? Varför skriver du "Dim aDeck(3,13)" (vad betyder det, om det är något med korten så finns det ju 14 kort.) Om man vill ha bilder på kort istället, då är det väl bara att skriva en replace?
<%
Function RndCard(aDeck)
Randomize
RndCard = aDeck(Round(Rnd*Ubound(aDeck,1)),Round(Rnd*Ubound(aDeck,2)))
End Function
Dim aDeck(3,13)
aColors = Array("Hjärter","Spader","Ruter","Klöver")
aValues = Array("1","2","3","4","5","6","7","8","9","10","Knekt","Dam","Kung","Ess")
'Skapar färger
For i = Lbound(aColors) To Ubound(aColors)
'Skapar valörer
For j = Lbound(aValues) To Ubound(aValues)
aDeck(i,j) = j
Next
Next
intVal = 0
Do While intVal < 22
intCard = RndCard(aDeck)+1
If intCard > 10 AND intCard < 14 Then intCard = 10
If intCard = 14 Then
intCard = 11
If intVal + inCard > 21 Then intCard = intCard - 10
End If
intVal = intVal + intCard
Response.Write intVal & "<br>"
If intVal > 16 Then Exit Do
Loop
%>
------------------ Vide rox = new Vide();
rox.learn("C#"); webeye.nu
Vide, jag tänkte på en sak. Din kod fungerar ju utmärkt, men om man ska räkna ut sannolikhet så borde man begränsa korlekten så att den uppför sig som en vanlig kortlek. Nu kan ju 5 3:or komma efter varandra (eller), men i en riktig kortlek finns det bara 4 stycken (det är möjligt att du har löst det, jag kan inte hitta det).
Skulle man inte också lösa mitt problem, som en alternativ lösning, att börja med 4 kort av varje valör och att det sedan minskade varje gång ett kort togs. Knappen blanda skulle seden återställa allt. Hur tycker du, proffset, att man bäst löser detta, går det att lösa med sessions kanske, eller blir det fel?
Jag tror det är lättare att räkna/använda kortleken om man ser den som 1 kortlek, inte flera. Black Jack använder väl 3? dvs. det finns 3 st förekomster av varje kort.
Ett tips är att "blanda" kortleken, det kan man göra genom att slumpa två kort ur leken, och sedan byta plats på dom. Detta kan man loopa igenom en bra stund.
Sedan använder man kortleken uppifrån och ner, och bara räknar hur många kort som är tagna. Dvs given plockar kort ett och ett, inte slumpar ut dom.
Vill man göra statistiska beräkningar, måste man veta vilka kort som är tagna, sedan är det en "vanlig" statistik beräkning.
Chansen att få ex hjärter 5, spader 7, klöver 9 är
1/156 + 1/155 + 1/154
Chansen att få ex hjärter 5, spader 7, klöver 9 i exakt denna kombination är
1/156 * 1/155 * 1/154
som ni märker måste man veta hur många kort det finns.
ex ovan utgår från en "full" kortlek dvs inget kort är taget.
vill man räkna ut olika chanser när kort är tagna, så måste man hålla koll på vilka som är tagna
Är tex 3 ess redan ute, och 10 andra kort ute så är chansen att få ett ess
Om man har 3 ess och 10 andra kort ute finns det 39 kort kvar i kortleken (räknar ppå en kortlek, spelar ju ingen roll). Ett av dem är ess. Dvs 1/39 chans.
Nog om det. Skulle man inte kunna göra med sessions som jag tänkte. Då menar jag att man lägger upp 13 sessions med olika namn och med värdet 4 (det finns ju 4 kort av varje sort, färgen spelar ingen roll). Sedan kan man ju minska sessionen med ett varje gång just det kortet tas. Då har man ju hela tiden koll på vilka kort som tagits. Knappen "Blanda" skulle sätta alla sessionen till 4.