Bekijk Volledige Versie : 5 random cijfers (ASP)
Hallo,
ik zou graag dmv een ASP-code vijf verschillende nummers laten zien
ik heb reeds gegoogeld en scriptjes die één random cijfer weergeven zijn er
genoeg
maar geen enkel gevonden die meerdere -verschillende- nummers genereren
de vijf nummers zouden tussen 1 en 25 moeten zijn
dus bevoorbeeld:
1 4 9 17 23
8 14 18 21 25
maar niet
2 7 7 14 24
voor 1 cijfer gebruik ik dit:
<%
Randomize
mijnnummer = INT((5)*RND())
%>
hoe ga ik tewerk voor vijf verschillende cijfers ?
met dank
Charlotte
Op 21-12-2009 19:47, Charlotte schreef:
>
> Hallo,
>
> ik zou graag dmv een ASP-code vijf verschillende nummers laten zien
> ik heb reeds gegoogeld en scriptjes die één random cijfer weergeven zijn
> er genoeg
> maar geen enkel gevonden die meerdere -verschillende- nummers genereren
>
> de vijf nummers zouden tussen 1 en 25 moeten zijn
> dus bevoorbeeld:
> 1 4 9 17 23
> 8 14 18 21 25
> maar niet
> 2 7 7 14 24
>
> voor 1 cijfer gebruik ik dit:
> <%
> Randomize
> mijnnummer = INT((5)*RND())
> %>
>
> hoe ga ik tewerk voor vijf verschillende cijfers ?
>
> met dank
> Charlotte
>
>
Sla de cijfers die je gevonden hebt op in een array,
En controleer na elk gevonden cijfer of die al voorkomt in die array
Als het cijfer al voorkomt, sla je het cijfer niet op, maar bepaalt een
nieuw cijfer
--
Luuk
"Luuk" <luuk@invalid.lan> schreef in bericht
news:nvt407-ldh.ln1@qqqqq.xs4all.nl...
> Op 21-12-2009 19:47, Charlotte schreef:
>>
>> Hallo,
>>
>> ik zou graag dmv een ASP-code vijf verschillende nummers laten zien
>> ik heb reeds gegoogeld en scriptjes die één random cijfer weergeven zijn
>> er genoeg
>> maar geen enkel gevonden die meerdere -verschillende- nummers genereren
>>
>> de vijf nummers zouden tussen 1 en 25 moeten zijn
>> dus bevoorbeeld:
>> 1 4 9 17 23
>> 8 14 18 21 25
>> maar niet
>> 2 7 7 14 24
>>
>> voor 1 cijfer gebruik ik dit:
>> <%
>> Randomize
>> mijnnummer = INT((5)*RND())
>> %>
>>
>> hoe ga ik tewerk voor vijf verschillende cijfers ?
>>
>> met dank
>> Charlotte
> Sla de cijfers die je gevonden hebt op in een array,
> En controleer na elk gevonden cijfer of die al voorkomt in die array
> Als het cijfer al voorkomt, sla je het cijfer niet op, maar bepaalt een
> nieuw cijfer
>
> Luuk
Kan je hier een voorbeeldje plaatsen aub
John Bokma
21/12/09, 21:45
"Charlotte" <charlotte.deleeuw@SPAMtelenet.be> writes:
> Hallo,
>
> ik zou graag dmv een ASP-code vijf verschillende nummers laten zien
> ik heb reeds gegoogeld en scriptjes die één random cijfer weergeven
> zijn er genoeg
> maar geen enkel gevonden die meerdere -verschillende- nummers genereren
>
> de vijf nummers zouden tussen 1 en 25 moeten zijn
> dus bevoorbeeld:
> 1 4 9 17 23
> 8 14 18 21 25
> maar niet
> 2 7 7 14 24
>
> voor 1 cijfer gebruik ik dit:
> <%
> Randomize
> mijnnummer = INT((5)*RND())
> %>
>
> hoe ga ik tewerk voor vijf verschillende cijfers ?
Je stopt de nummers 1..25 in een array, shuffle dit array, en neem de 1e
5 getallen.
Ik kan geen voorbeeld geven in "ASP", maar als je op array shuffle ASP
zoekt zijn er vast voldoende voorbeelden.
--
John Bokma
Read my blog: http://johnbokma.com/
Hire me (Perl/Python): http://castleamber.com/
John Bokma
21/12/09, 21:45
Luuk <luuk@invalid.lan> writes:
> Sla de cijfers die je gevonden hebt op in een array,
> En controleer na elk gevonden cijfer of die al voorkomt in die array
> Als het cijfer al voorkomt, sla je het cijfer niet op, maar bepaalt een
> nieuw cijfer
Dit is een erg slechte manier om dit aan te pakken. Een veel betere
manier is om 1..25 in een array op te slaan, dit array te "schudden"
(shuffle), en dan neem je (bijvoorbeeld) de 1e 5 getallen.
Jouw manier zal in veel gevallen voor een niet-uniforme verdeling
zorgen, en ik gok dat dat juist wel de bedoeling is.
--
John Bokma
Read my blog: http://johnbokma.com/
Hire me (Perl/Python): http://castleamber.com/
Op 21-12-2009 21:39, John Bokma schreef:
> Luuk <luuk@invalid.lan> writes:
>
>> Sla de cijfers die je gevonden hebt op in een array,
>> En controleer na elk gevonden cijfer of die al voorkomt in die array
>> Als het cijfer al voorkomt, sla je het cijfer niet op, maar bepaalt een
>> nieuw cijfer
>
> Dit is een erg slechte manier om dit aan te pakken. Een veel betere
> manier is om 1..25 in een array op te slaan, dit array te "schudden"
> (shuffle), en dan neem je (bijvoorbeeld) de 1e 5 getallen.
>
> Jouw manier zal in veel gevallen voor een niet-uniforme verdeling
> zorgen, en ik gok dat dat juist wel de bedoeling is.
>
Kan je dat bewijzen?
Of is dit een vermoeden dat de verdeling anders is...
Ik denk dat het niks uitmaakt (statistisch gemiddeld)
--
Luuk
John Bokma
21/12/09, 22:45
Luuk <luuk@invalid.lan> writes:
> Op 21-12-2009 21:39, John Bokma schreef:
>> Luuk <luuk@invalid.lan> writes:
>>
>>> Sla de cijfers die je gevonden hebt op in een array,
>>> En controleer na elk gevonden cijfer of die al voorkomt in die array
>>> Als het cijfer al voorkomt, sla je het cijfer niet op, maar bepaalt een
>>> nieuw cijfer
>>
>> Dit is een erg slechte manier om dit aan te pakken. Een veel betere
>> manier is om 1..25 in een array op te slaan, dit array te "schudden"
>> (shuffle), en dan neem je (bijvoorbeeld) de 1e 5 getallen.
>>
>> Jouw manier zal in veel gevallen voor een niet-uniforme verdeling
>> zorgen, en ik gok dat dat juist wel de bedoeling is.
>>
>
> Kan je dat bewijzen?
>
> Of is dit een vermoeden dat de verdeling anders is...
>
> Ik denk dat het niks uitmaakt (statistisch gemiddeld)
Maar kan je dat bewijzen?
En ja, ik denk wel dat ik dat kan bewijzen, maar het zal mij de nodige
tijd kosten. Maar laten we even aannemen dat het jouw vermoeden juist
is. Ben je het eens dat mijn oplossing mooier is?
(Let op: schrijf de shuffle niet zelf, want de meeste naive vormen van
shufflen zorgen voor een niet-uniforme verdeling (uit mijn hoofd)).
--
John Bokma
Read my blog: http://johnbokma.com/
Hire me (Perl/Python): http://castleamber.com/
jongens, jongens,jongens,
't is al goed
ik heb reeds gevonden wat ik nodig had
allen bedankt !!!
John Bokma
21/12/09, 23:05
"Charlotte" <charlotte.deleeuw@SPAMtelenet.be> writes:
> jongens, jongens,jongens,
>
> 't is al goed
> ik heb reeds gevonden wat ik nodig had
Het is gebruikelijk op Usenet dat als je zelf de oplossing vind, dat je
die (of een link er naar) ook even post.
--
John Bokma
Read my blog: http://johnbokma.com/
Hire me (Perl/Python): http://castleamber.com/
> Het is gebruikelijk op Usenet dat als je zelf de oplossing vind, dat je
> die (of een link er naar) ook even post.
>
> --
> John Bokma
ik citeer:
Ik kan geen voorbeeld geven in "ASP", maar als je op array shuffle ASP
zoekt zijn er vast voldoende voorbeelden.
wat ik dan ook gedaan heb
Erick T. Barkhuis
22/12/09, 08:05
John Bokma:
>Luuk <luuk@invalid.lan> writes:
>
>> Op 21-12-2009 21:39, John Bokma schreef:
>>> Luuk <luuk@invalid.lan> writes:
>>>
>>>> Sla de cijfers die je gevonden hebt op in een array,
>>>> En controleer na elk gevonden cijfer of die al voorkomt in die
>>>>array Als het cijfer al voorkomt, sla je het cijfer niet op,
>>>>maar bepaalt een nieuw cijfer
>>>
>>> Dit is een erg slechte manier om dit aan te pakken. Een veel
>>>betere manier is om 1..25 in een array op te slaan, dit array te
>>>"schudden" (shuffle), en dan neem je (bijvoorbeeld) de 1e 5
>>>getallen.
>>> Jouw manier zal in veel gevallen voor een niet-uniforme verdeling
>>> zorgen, en ik gok dat dat juist wel de bedoeling is.
>>>
>>
>> Kan je dat bewijzen?
>En ja, ik denk wel dat ik dat kan bewijzen, maar het zal mij de nodige
>tijd kosten.
Neem die tijd maar eens, want ik ben reuze benieuwd. :-)
Alle getallen hebben nog steeds kans 1/25....ook die, die je al hebt
getrokken. Het niet-accepteren van een bepaalde uitkomst (omdat je die
al hebt) verhoogt voor geen enkel getal de kans getrokken te worden. Er
is immers sprake van "trekking met teruglegging".
--
Erick
"WinErr 008: Erroneous error. Nothing is wrong"
Desiderius
22/12/09, 18:25
Erick T. Barkhuis <erick.use-net@ardane.c.o.m> schreef:
> John Bokma:
>
> >Luuk <luuk@invalid.lan> writes:
> >
> >> Op 21-12-2009 21:39, John Bokma schreef:
> >>> Luuk <luuk@invalid.lan> writes:
> >>>
> >>>> Sla de cijfers die je gevonden hebt op in een array,
> >>>> En controleer na elk gevonden cijfer of die al voorkomt in die
> >>>>array Als het cijfer al voorkomt, sla je het cijfer niet op,
> >>>>maar bepaalt een nieuw cijfer
> >>>
> >>> Dit is een erg slechte manier om dit aan te pakken. Een veel
> >>>betere manier is om 1..25 in een array op te slaan, dit array te
> >>>"schudden" (shuffle), en dan neem je (bijvoorbeeld) de 1e 5
> >>>getallen.
> >>> Jouw manier zal in veel gevallen voor een niet-uniforme verdeling
> >>> zorgen, en ik gok dat dat juist wel de bedoeling is.
> >>>
> >>
> >> Kan je dat bewijzen?
>
> >En ja, ik denk wel dat ik dat kan bewijzen, maar het zal mij de nodige
> >tijd kosten.
>
> Neem die tijd maar eens, want ik ben reuze benieuwd. :-)
> Alle getallen hebben nog steeds kans 1/25....ook die, die je al hebt
> getrokken. Het niet-accepteren van een bepaalde uitkomst (omdat je die
> al hebt) verhoogt voor geen enkel getal de kans getrokken te worden. Er
> is immers sprake van "trekking met teruglegging".
Toch is er verschil. Bij trekken en niet terugleggen is de kans van
het 2e getal 1 op 24, enz. Wat dat verschil is, kan ik even moeilijk
een vinger achter krijgen, maar het is er.
Erick T. Barkhuis
22/12/09, 18:45
Desiderius:
>Erick T. Barkhuis <erick.use-net@ardane.c.o.m> schreef:
>> John Bokma:
>>
>> >Luuk <luuk@invalid.lan> writes:
>> >
>> >> Op 21-12-2009 21:39, John Bokma schreef:
>> >>> Luuk <luuk@invalid.lan> writes:
>> >>>
>> >>>> Sla de cijfers die je gevonden hebt op in een array,
>> >>>> En controleer na elk gevonden cijfer of die al voorkomt in die
>> >>>>array Als het cijfer al voorkomt, sla je het cijfer niet op,
>> >>>>maar bepaalt een nieuw cijfer
>> >>>
>> >>> Dit is een erg slechte manier om dit aan te pakken. Een veel
>> >>>betere manier is om 1..25 in een array op te slaan, dit array
>>te >>>"schudden" (shuffle), en dan neem je (bijvoorbeeld) de 1e 5
>> >>>getallen.
>> >>> Jouw manier zal in veel gevallen voor een niet-uniforme
>>verdeling >>> zorgen, en ik gok dat dat juist wel de bedoeling is.
>> >>>
>> >>
>> >> Kan je dat bewijzen?
>>
>> >En ja, ik denk wel dat ik dat kan bewijzen, maar het zal mij de
>>nodige >tijd kosten.
>>
>> Neem die tijd maar eens, want ik ben reuze benieuwd. :-)
>> Alle getallen hebben nog steeds kans 1/25....ook die, die je al
>>hebt getrokken. Het niet-accepteren van een bepaalde uitkomst
>>(omdat je die al hebt) verhoogt voor geen enkel getal de kans
>>getrokken te worden. Er is immers sprake van "trekking met
>>teruglegging".
>
>Toch is er verschil. Bij trekken en niet terugleggen is de kans van
>het 2e getal 1 op 24, enz. Wat dat verschil is, kan ik even moeilijk
>een vinger achter krijgen, maar het is er.
Dat klopt wel, maar in dit geval is er wel sprake van teruglegging.
Mocht echter een teruggelegd getal opnieuw getrokken worden, dan "telt
dat niet" en wordt die trekking genegeerd.
[Overgens is de oplossing met de shuffled array natuurlijk mooier]
--
Erick
John Bokma
22/12/09, 18:55
"Erick T. Barkhuis" <erick.use-net@ardane.c.o.m> writes:
> John Bokma:
>
>>Luuk <luuk@invalid.lan> writes:
>>
>>> Op 21-12-2009 21:39, John Bokma schreef:
>>>> Luuk <luuk@invalid.lan> writes:
>>>>
>>>>> Sla de cijfers die je gevonden hebt op in een array,
>>>>> En controleer na elk gevonden cijfer of die al voorkomt in die
>>>>>array Als het cijfer al voorkomt, sla je het cijfer niet op,
>>>>>maar bepaalt een nieuw cijfer
>>>>
>>>> Dit is een erg slechte manier om dit aan te pakken. Een veel
>>>>betere manier is om 1..25 in een array op te slaan, dit array te
>>>>"schudden" (shuffle), en dan neem je (bijvoorbeeld) de 1e 5
>>>>getallen.
>>>> Jouw manier zal in veel gevallen voor een niet-uniforme verdeling
>>>> zorgen, en ik gok dat dat juist wel de bedoeling is.
>>>>
>>>
>>> Kan je dat bewijzen?
>
>>En ja, ik denk wel dat ik dat kan bewijzen, maar het zal mij de nodige
>>tijd kosten.
>
> Neem die tijd maar eens, want ik ben reuze benieuwd. :-)
> Alle getallen hebben nog steeds kans 1/25....ook die, die je al hebt
> getrokken. Het niet-accepteren van een bepaalde uitkomst (omdat je die
> al hebt) verhoogt voor geen enkel getal de kans getrokken te worden. Er
> is immers sprake van "trekking met teruglegging".
Ik gok even: ik denk dat het verschil zeer zeker te maken heeft met dat
een computer een pseudo-random number generator gebruikt (PRNG) en niet
een 25-zijdige dobbelsteen.
Maar goed, mocht iemand zeker weten dat ik er naast zit, hoor ik het ook
graag. Het blijft natuurlijk wel een naief algoritme, ook omdat er een
extreem kleine kans is dat bij echte "trekking met teruglegging" je
jaren lang telkens de 5 trekt ;-)
--
John Bokma
Read my blog: http://johnbokma.com/
Hire me (Perl/Python): http://castleamber.com/
RoB de Vries
22/12/09, 19:25
"Charlotte" <charlotte.deleeuw@SPAMtelenet.be> schreef in bericht
news:cVTXm.99849$lP6.72843@newsfe13.ams2...
>
>> Het is gebruikelijk op Usenet dat als je zelf de oplossing vind, dat je
>> die (of een link er naar) ook even post.
>>
>> --
>> John Bokma
>
>
>
> ik citeer:
> Ik kan geen voorbeeld geven in "ASP", maar als je op array shuffle ASP
> zoekt zijn er vast voldoende voorbeelden.
>
> wat ik dan ook gedaan heb
Prima en nu heb je een keuze uit een 50(?) tal gemaakt.
Wij zijn natuurlijk nieuwsgierig welke..
Ik volgde dit draadje, ooit heb ik nml. eens een yahtzee progje geschreven
voor een msx-achtige 'pc'.
Dat random bleek vroeger helemaal niet zo random, want er werd telkens van
dezelfde parameters gebruik gemaakt.
Je moest echt bijv. via de timer iets forceren, dus ik ben benieuwd.
gtx
RoB
Op 21-12-2009 22:41, John Bokma schreef:
> Luuk <luuk@invalid.lan> writes:
>
>> Op 21-12-2009 21:39, John Bokma schreef:
>>> Luuk <luuk@invalid.lan> writes:
>>>
>>>> Sla de cijfers die je gevonden hebt op in een array,
>>>> En controleer na elk gevonden cijfer of die al voorkomt in die array
>>>> Als het cijfer al voorkomt, sla je het cijfer niet op, maar bepaalt een
>>>> nieuw cijfer
>>>
>>> Dit is een erg slechte manier om dit aan te pakken. Een veel betere
>>> manier is om 1..25 in een array op te slaan, dit array te "schudden"
>>> (shuffle), en dan neem je (bijvoorbeeld) de 1e 5 getallen.
>>>
>>> Jouw manier zal in veel gevallen voor een niet-uniforme verdeling
>>> zorgen, en ik gok dat dat juist wel de bedoeling is.
>>>
>>
>> Kan je dat bewijzen?
>>
>> Of is dit een vermoeden dat de verdeling anders is...
>>
>> Ik denk dat het niks uitmaakt (statistisch gemiddeld)
>
> Maar kan je dat bewijzen?
>
> En ja, ik denk wel dat ik dat kan bewijzen, maar het zal mij de nodige
> tijd kosten. Maar laten we even aannemen dat het jouw vermoeden juist
> is. Ben je het eens dat mijn oplossing mooier is?
>
> (Let op: schrijf de shuffle niet zelf, want de meeste naive vormen van
> shufflen zorgen voor een niet-uniforme verdeling (uit mijn hoofd)).
>
Jou oplossing is alleen mooier als de 25 in het voorbeeld dicht bij de 5
te kiezen getallen komt.
Als bijvoorbeeld 5 getallen uit een rij van 10000 getallen moeten worden
getrokken is mijn benadering sneller.
Over die 'niet-uniforme verdeling' maak ik me in ieder geval geen
zorgen. Mocht het nodig zijn om dit wel te doen vanwege die PRNG
(pseudo-random number generator) die je elders in deze draad word
genoemd, dan is daar ook nog wel een 'random' oplossing voor te verzinnen.
--
Luuk
John Bokma
23/12/09, 22:15
Luuk <luuk@invalid.lan> writes:
> Jou oplossing is alleen mooier als de 25 in het voorbeeld dicht bij de 5
> te kiezen getallen komt.
>
> Als bijvoorbeeld 5 getallen uit een rij van 10000 getallen moeten worden
> getrokken is mijn benadering sneller.
Dat hangt van de programmeur af, de gekozen programmeertaal, en hoe
shuffle geimplementeerd is (welke taal of zelfs assembly). Perl heeft
zeker geen lange tijd nodig met 10k getallen, en doet zelfs niet
moeilijk met 1M:
time perl -e 'use List::Util qw(shuffle); my @getallen = (shuffle(1..1_000_000))[0..4]; print "@getallen"'
692728 230980 321147 23920 9401
real 0m0.403s
user 0m0.256s
sys 0m0.068s
Of dit handig is, hangt natuurlijk van de toepassing af. (En in dit
geval zou ik mij eerder zorgen maken om geheugengebruik)
> Over die 'niet-uniforme verdeling' maak ik me in ieder geval geen
> zorgen. Mocht het nodig zijn om dit wel te doen vanwege die PRNG
> (pseudo-random number generator) die je elders in deze draad word
> genoemd, dan is daar ook nog wel een 'random' oplossing voor te
> verzinnen.
Het is een vak apart, en je moet aardig wat verstand van zaken hebben om
dat soort dingen goed te doen. Ik ben er te lang uit om er 1,2,3 ook
maar iets nuttigs over te kunnen zeggen. Die niet uniforme verdeling is
iets wat ik mij vaag uit mijn (genetische) algoritmen tijd herinner
(jaren '90).
--
John Bokma
Read my blog: http://johnbokma.com/
Hire me (Perl/Python): http://castleamber.com/
Bas Janssen
24/12/09, 12:45
John Bokma schreef:
<snip>
> Het is een vak apart, en je moet aardig wat verstand van zaken hebben om
> dat soort dingen goed te doen. Ik ben er te lang uit om er 1,2,3 ook
> maar iets nuttigs over te kunnen zeggen. Die niet uniforme verdeling is
> iets wat ik mij vaag uit mijn (genetische) algoritmen tijd herinner
> (jaren '90).
Dit is zeker een vak apart. Von Neumann zei eens: "Any one who
considers arithmetical methods of producing random digits is, of course,
in a state of sin."
Meer over over random en 'gratis' 1.000.000 random bits :-)
http://www.random.org/
http://www.random.org/randomness/
Software om entropie meten: ENT
http://www.fourmilab.ch/random/
Nog een paar oplossingen voor 'echte' random nummers: (trng)
http://www.fourmilab.ch/hotbits/
http://www.idquantique.com/products/quantis.htm
En deze zag ik toevallig vandaag langskomen op diverse blogs, ook erg
leuk:
http://home.comcast.net/~hourglass/index.html
--
Bas Janssen /. bas@dds.nl /. www.bas.dds.nl /. PGP#0x22FA2C9F
Insanity Takes Its Toll. Please Have Exact Change