PDA

Volledige versie bekijken : loterij


aceka
%Europe/Berlin %514 %2005, 13:20
hoi allemaal
even wennen nu ff wat is veranderd maar het komt vast wel weer allemaal goed

ik zit met een vraag en heb al tutorials gezocht maar kan er moeilijk een vinden
weet er iemand een waar ik een loterij machine kan maken
dus ik geef een x aantal nummer in en die nummers worden op een willekeurige manier getrokken en natuurlik mag het niet zo zijn dat een getal 2 maal getrokken word
weet eiamd een tutorial hier over of kan en wil iemand mij helpen


gr harold

XemonerdX
%Europe/Berlin %522 %2005, 13:32
Je zou de nummers in een array kunnen gooien en deze array shufflen. Zie voor een shuffle manier bijv hier (http://proto.layer51.com/d.aspx?f=147).

TrueChaoZ
%Europe/Berlin %549 %2005, 14:10
maar je zou toch ook gewoon een array kunnen maken met alle getallen daarin...
en dan random 1tje eruittrekken en vervolgens degene die eruit gekozen is uit de array verwijderen en dan weer random een getal trekken enzovoorts...

Ingrediënten:
- forloop die een array maakt met de benodigde getallen (ik neem aan dat het bijv. 1-100 is)
- bovenstaande array kopieer je naar een nieuwe tijdelijke array (of voor elke loting laat je een nieuwe array aanmaken met het forloopje)
- op de array voer je een Math.random() uit, bijv.
w = array.length - 1;
z = Math.round(Math.random() * w);
z is dan je willekeurige key in de array en is altijd een geldige key in je array.
- je past z toe op de array, array[z]
- en daarna verwijder je de key z uit de array, array.splice(start:Number, deleteCount:Number), dus dat wordt dan array.splice(z,1)
- hierna kan de volgende trekking beginnen

Ik denk dat dit wel moet werken, mocht je het uitproberen laat even weten of het een beetje werkt. Succes.

aceka
%Europe/Berlin %907 %2005, 22:46
bedankt

ik heb ondertussen een loterijtje werkend gekregen
maar nog niet helemaal hoe ikhet wil

het gaat hierom

het is bedoeld voor trekkingvan loterij kaarten die verkocht worden
op elke kaart staan 4 nummers die beginnen bij bijv. nr 2001 4001 6001 en 8001 dit zijn de nummers op 1 kaart
dus op kaart 2 staan dan 2002 4002 6002 en 8002
enz enz
hoe kan ik deze nummers in een array zetten zonder ze handmatig allemaal in te moeten voeren
en zonder dat dan ook bijv nummer 100 word getrokken dus alleen de nummer tussen 2000 en 8999
is hier een manier voor ?

mvg harold

aceka
%Europe/Berlin %923 %2005, 23:09
en nog iets wat ik vergeten ben
is he tmogelijk dat de getrokken nummer meteen in een variabele gezet worden dus onthouden of iets in die zin zodat ik deze na de trekking kan uitprinten ?

vast bedankt
harold

Jordy
%Europe/Berlin %925 %2005, 23:12
Misschien in een .TXT bestandje zetten :). Dat je ze daar naar toe schrijft, de getrokken getallen.

Moet je wel php gebruiken, maar er zjin zat tutorials die zoiets uitleggen :)

aceka
%Europe/Berlin %943 %2005, 23:39
php wat is dat ??? nee ik ken dat wel van horen zeggen maar ben daar al helemaal een leek in maar niet te beroerd om het te leren
hou het voorlopig liever even bij flash en as maar mss is het een optie als het echt niet anders kan

harold

TrueChaoZ
%Europe/Berlin %950 %2005, 23:49
bedankt
het is bedoeld voor trekkingvan loterij kaarten die verkocht worden
op elke kaart staan 4 nummers die beginnen bij bijv. nr 2001 4001 6001 en 8001 dit zijn de nummers op 1 kaart
dus op kaart 2 staan dan 2002 4002 6002 en 8002
enz enz
hoe kan ik deze nummers in een array zetten zonder ze handmatig allemaal in te moeten voeren
en zonder dat dan ook bijv nummer 100 word getrokken dus alleen de nummer tussen 2000 en 8999
is hier een manier voor ?

je zegt dus dat alle nummers liggen tussen 2000 en 9000 dus de array moet gevuld worden met nummers tussen de 2000 en 9000, dus dan zou de forloop er zo uitzien:

<FOUT>var lotery_arr:Array = new Array();
var ticketstart:Number = 2000;
var ticketend:Number = 9000;
var j:Number = ticketstart;
for (var i = 0; j < ticketend; i++) {
lotery_arr[i] = j;
j++;
}</FOUT>
var lotery_arr:Array = new Array();
var ticketstart:Number = 2000;
var ticketend:Number = 9000;
var i:Number = 0;
for (var j = ticketstart; j < ticketend; j++) {
lotery_arr[i] = j;
i++;
}

ik weet eigenlijk niet zeker of dat kan >>> for (var i = 0; j < ticketend; i++) {
maar het is het proberen waard, en daarna kan je gewoon de rest gebruiken wat je al hebt met het random trekken aan de hand van de lengte.

het wegschrijven van de var met de getrokken waarde voordat deze verwijderd wordt is natuurlijk mogelijk, bij het regeltje waar ik zei: - je past z toe op de array, array[z], daar voeg je dan het wegschrijven van de variabele toe, waarschijnlijk is het het handigst om alle getrokken nummers in een array weg te schrijven, dus maak bovenaan de code een lege array aan en doe bij het wegschrijven het volgende: die_lege_array.push(z);

EDIT: er stond een foutje in de code, ik was duidelijk bijna aan het slapen :o

raidho
%Europe/Berlin %984 %2005, 00:38
...
for (var i = 0; j < ticketend; i++) {
...

dit zou beter moeten werken:

for (var j = ticketstart; j < ticketend; j++) {

edit:
maar dat had je zelf ook door... :)

aceka
%Europe/Berlin %452 %2005, 11:51
ik heb het meerdere malen geprobeerd maar ik ga het ff posten wat ik heb zodadelijk
dan kan iemand mij mss helpen als hij weet wat ik heb


grharold

aceka
%Europe/Berlin %457 %2005, 11:59
ik heb een keer een soort van topografie gemaakt en daar heb ik nu het as van gebruikt

alleen weet ik niet wat er uit mag en wat niet

hier is het gehele script
// init score
score = 0;
aantal = score;
plaats = " ";
correctie = " ";
// init nummers
zoekwoord = new Array("1001", "2001", "3001" );
zoekwoordteller = 0;
// vraag stellen
zoekwoordteller = Math.round(Math.random()*(zoekwoord.length-1));
_root.nummer = zoekwoord[zoekwoordteller]+"";
// controle functie die uitgevoerd wordt als op een plaats geklikt is
function controle(plaats) {
if (plaats == zoekwoord[zoekwoordteller]) {
// goed-acties
resultaat = "GOED!!";
score += 1;
scoretekst = score;
correctie = " ";
} else {
// fout-acties
resultaat = "FOUT";
score += 1;
aantal = score;
correctie = " ";
}
// nieuwe plaats bepalen
zoekwoord.splice(zoekwoordteller, 1);
if (zoekwoord.length == 0) {
gotoAndStop("einde");
}
zoekwoordteller = Math.round(Math.random()*(zoekwoord.length-1));
nummer = zoekwoord[zoekwoordteller]+"";
}


dus hier staat eenheleboel in wat teveel is maar weet nie tjuis twat
kan iemand mij helpen
?
mvg harold

theFlashWizard
%Europe/Berlin %494 %2005, 12:52
gaas zelf stukje voor stukje weghalen en kijk tot wanneer hij blijft werken, kijk ondertussen bij dingen die je niet snapt in flash help en je leer n boel bij :)

aceka
%Europe/Berlin %587 %2005, 15:06
ik ben al een heel eind gekomen maar weet alleen nog niet hoe ik nu die nummers van 2000 tot 9000 in mijn as krijg moet ik hiervoor nog iets extra's aan toevoegen in as of hoe zit dit precies?



harold

theFlashWizard
%Europe/Berlin %621 %2005, 15:55
met die post van TrueChaoZ kom je er niet uit?

mshn kun je het zelf:
Arrays:
http://www.actionscripts.org/tutorials/intermediate/Arrays/index.shtml
Loops
http://www.actionscripts.org/tutorials/intermediate/loops/index.shtml
http://www.actionscripts.org/tutorials/intermediate/Nested_loops/index.shtml

aceka
%Europe/Berlin %813 %2005, 20:31
ja het enige wat ik vraag is hoe ik nu die nummers in Mijn as kan krijgen dus hoe vul ik hier
zoekwoord = new Array("1001", "2001", "3001" );
de nummers in van 2000 tot 9000 zonder dat ik deze allemaal handmatig in moet voeren zoals ik hierboven met 3 gedaan heb (2001 2002 en 2003)
als iemand me hier bij kan helpen ben ik er uit
dus alleen de verkorte versie van hoe ik deze nummers er in zet zonder dat ik een compleet nieuwe opzet moet maken zoals die van TrueChaoZ
ik heb namelijk een lotto werkend gekregen maar als ik al die getallen handmatig in moet voeren dan ben ik wel ff bezig en als het alleen op de manier van true chaos kan dan zal ik zeker nog maar wat door zoeken

hopenlijk snappen jullie wat ik bedoel en zijn jullie bereid me nogmaals te helpen

vast bedankt en gr
harold

theFlashWizard
%Europe/Berlin %817 %2005, 20:37
slap dat je het zelf niet wilt proberen aan de hand van onze help of de tuturials..

zoekwoord = new Array()
for(i=2000;i<=9000;i++){
zoekwoord.push(i)
}

That does the trick

maar je kan beter wanneer je dit opvraagt een random cijfer op vragen in die catogorie..

zoek maaris op random op dit forum.. :)
en doe et nou is echt ook..

check is:
http://www.flashfocus.nl/forum/showthread.php?t=238&highlight=random

aceka
%Europe/Berlin %881 %2005, 22:10
ben al dagen aan het proberen dus moet het niet slap noemen
beter was geweest onkunde en als je denkt dat ik het niet wil proberen had je beter ook niet gepost
maar goed ga der over ophouden in iedergeval bedankt
zo valt er hier toch nog wat te leren

zal het laten weten zodra het me gelukt is

gr harold

aceka
%Europe/Berlin %938 %2005, 23:30
jongens nogmaals bedankt hij werkt nu perfect


harold

TrueChaoZ
%Europe/Berlin %005 %2005, 01:08
Mooi ik ben blij dat het toch nog gelukt is :)
veel succes verder met de loterij, ik hoop dat je geluk hebt bij de trekking ;)

theFlashWizard
%Europe/Berlin %092 %2005, 03:12
dat dagen proberen kwam er in deze post anders niet uit..
maar vraag me nu best wel af hoe je het uiteindelijk gedaan heb.. :P
is ook wel interesant voor de personen die deze post mischien ooit, met hetzelfde probleem teruglezen..

aceka
%Europe/Berlin %374 %2005, 09:59
zal het posten zodra hij helemal af is