Avatar billede bruhnsweb Nybegynder
03. januar 2004 - 15:56 Der er 22 kommentarer og
1 løsning

Random function fejl

Hej Eksperter

Har en random-funktion, som ik helt er så random endda :o(

---------------------
<%
Randomize(Cbyte(left(right(Time(), 5),2)))
RANDOMVALUE =(Int((2 - 1 + 1) * Rnd + 1))
Select Case RANDOMVALUE
%>
--------------------------
Udskriver den sådan:
<% Case 1 %>
her1
<% Case 2 %>
her2
<% End Select %>


Case 1 fremkommer meget mere end case 2 gør, hvorfor?
Avatar billede trumf Nybegynder
03. januar 2004 - 16:04 #1
Nu er jeg ikke sikker på, hvordan det virker rent teknisk på serveren, men funktionen RND er lavet så x antal besøgende på et web alle ser f.eks. et billede, eller hvad det nu er man vil vise i random.
Så hvis der kun er én der trigger den hele tiden, vil det samme resultat nogen gange fremkomme mere end det andet, men det skifter, så hvis du prøver igen i morgen så er det måske den anden der vises flere gange.
Avatar billede pfp Nybegynder
03. januar 2004 - 16:04 #2
Fordi ASP's random funktion ikke er rigtig random...samme problem i Java
Avatar billede trumf Nybegynder
03. januar 2004 - 16:08 #3
Det var vist lidt tåget...

den er lavet således at så mange som muligt får set f.eks. så mange forskellige reklamer som muligt...
Den er ikke så god hvis der ikke er så mange forskellige brugere til at trigge den...

Stadig tåget, men jeg håber du forstår hvad jeg mener :-)
Avatar billede erikjacobsen Ekspert
03. januar 2004 - 16:08 #4
Det passer nu da meget godt, hvis du selv lader den bestemme start-seed:

Randomize()
dim a(3)
for i=1 to 1000
RANDOMVALUE =(Int((2 - 1 + 1) * Rnd + 1))
response.write RANDOMVALUE & " - "
a(RANDOMVALUE)=a(RANDOMVALUE)+1
next

response.write "<br> 1 = " & a(1)  & " og 2 = " & a(2) & "<br>"
%>
Avatar billede bruhnsweb Nybegynder
03. januar 2004 - 16:12 #5
Erikjacobsen > Hvordan passer det lige ind i mit?
Gider du sætte det op :o)
Avatar billede erikjacobsen Ekspert
03. januar 2004 - 16:19 #6
Du skal jo ikke bruge det jeg viser dig til andet end at teste at den
såmænd rammer nogenlunnde lige mange af 1 og 2. Du skal bare bruge
randomize som vist - det er alt ;)
Avatar billede bruhnsweb Nybegynder
03. januar 2004 - 16:28 #7
Du skriver:
"hvis du selv lader den bestemme start-seed"
Gør jeg det?
Avatar billede erikjacobsen Ekspert
03. januar 2004 - 16:40 #8
Når du skriver
  Randomize()
så ja.
Avatar billede bruhnsweb Nybegynder
03. januar 2004 - 16:45 #9
Nå men alt det her blev jeg ik så meget klogere af :o(

Jeg må bare gå ud fra at det virke så godt som det kan.. Eller?
Avatar billede erikjacobsen Ekspert
03. januar 2004 - 16:46 #10
Ja, det kan ikke virke bedre. Du får i gennemsnit stort set lige mange 1-ere og 2-ere.
Avatar billede bruhnsweb Nybegynder
03. januar 2004 - 16:51 #11
Ok - Så lukker jeg igen - Tak for hjælpen :o)
Avatar billede trumf Nybegynder
04. januar 2004 - 12:08 #12
De point kan du sgu ikke selv tage. Både pfp, erik og jeg har givet dig noget du kan bruge. Under alle omstændigheder, så er dit spørgsmål besvaret, så host bare op. Jeg er ligeglad med hvem af os der får point, men du tager dem ikke selv!!!

Der må søreme være grænser for hvordan man kan opføre sig her...
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 12:12 #13
Det er ligemeget med point til mig.
Avatar billede trumf Nybegynder
04. januar 2004 - 12:14 #14
Det er det også med mig, men det er princippet...
Avatar billede bruhnsweb Nybegynder
04. januar 2004 - 12:15 #15
Arhhh - Ta en TUC kiks!!! :o)

Skriv hvis der en der vil have point, så opretter jeg da gerne et spørgsmål..
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 12:25 #16
"det er princippet"... ok da.

trumfs indlæg er formelt forkert. Det er bestemt ikke sådan en
tilfældighedstalsgenerator fungerer. Det er altså både forkert,
og ikke anvendeligt for spørgeren.

pfps er formelt korrekt. Man får en ikke ægte tilfældige tal.
Det kan man principielt godt, men det koster i tid, og er hverken
realistisk eller i dette tilfælde nødvendigt. Oplysningen hjælper
dog ikke spørgeren til en løsning på problemet.

Problemet, som jeg vil prøve at forklare lidt bedre her, er at
den startværdi der vælges i eksemplet tilfældigvis rammer et sted
så der er en overvægt af een af de 2 ønskede værdier. Det vil ske,
hvad pfps kommentar så også siger. Min løsning, for det skal spørgeren
jo have, er at lade ASP/VB selv vælge startværdien. Så vil man selvfæølgelig
kunne komme i en situation, hvor er er overvægt af den ene værdi, men
over lang tid udlignes det - nogenlunde.

Så da jeg synes det er besværet værd at give mig point, og da jeg ikke
kan se de andre deltagere har leveret noget der fortjener point (stadig
bare min egen mening), så vil jeg anbefale spørgeren at stoppe her.
Avatar billede bruhnsweb Nybegynder
04. januar 2004 - 12:28 #17
Tak - Vi stopper!
Avatar billede trumf Nybegynder
04. januar 2004 - 12:50 #18
Du er helt forkert på den. Det jeg mente var, at rnd er lavet så flere vil se noget forskelligt i stedet for bare at give et tilfældigt tal.

Hvis der feks er 10 der skal se 5 forskellige billeder, så er det bedst hvis billede 1 vises 10 gange i træk, og derefter billede 2 10 gange, da det er mest sandsynligt at når en side har samme indhold, så har brugere det samme mønster at surfe efter, og derfor klikker videre samtidig.

Hvis der kun er en bruger på, så vil denne altså se billede 1 10 gange i træk og derefter billede 2 osv. men alle billederne vil i sidste ende ses lige mange gange.

I mit svar brugte jeg x hvor jeg her bruger tallet 10, for jeg ved ikke lige hvordan det helt hænger sammen og det skifter også, da nogen kommer til og andre falder fra, men det korte og det lange er, at RND ikke er ren tilfældighed, men en funktion skrevet af microsoft. (sikkert med bannere i øjemed)

Jeg vil nu mene at en forklaring af hvordan RND virker er det rigtige svar, og jeg ved det er nogenlunde sådan den virker! Spørgsmålet gik jo netop på, hvorfor det umiddelbart så ud som om at den enne blev vist flere gange end den anden.

Prøv f.eks. at lave den samme udskrift med med flere end 2 tal og se hvor tit det samme skrives ud flere end 2 gange i træk. og lav derefter samme i et andet programmeringssprog og se forskellen, f.eks. ved at udregne hvor tit samme tal skrives i træk.
Avatar billede trumf Nybegynder
04. januar 2004 - 12:56 #19
Og jeg kan godt forstå at du vil stoppe bruhnsweb, for du har jo næsten ikke råd til at være her på Eksperten. Du har på næsten to år kun tjænt 32 point og du har flere point ude, som er korrekt besvaret, men ikke lukket...

Er der et mønster her ?
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 16:35 #20
Men det er ikke sådan den fungerer, trumf. Og det er nu heller ikke
noget du skal give Microsoft æren for. Men slut herfra.
Avatar billede trumf Nybegynder
06. januar 2004 - 12:19 #21
erikjacobsen> Det viser bare hvor lidt du ved om det. Når du skriver randomize() i ASP så kalder du en funktion, ligesom hvis du skriver formatdatetime(). Microsoft har har lavet om på randomize funktionen, så den virker som jeg beskriver. Det er også derfor at det ikke er en "rigtig" randomize....
Avatar billede bruhnsweb Nybegynder
06. januar 2004 - 19:22 #22
Fårk hvor er du plat at høre på... Vil du gerne have de point, får hvis det var point jeg ville have, så ville jeg nok har lidt flere end dem jeg har.. Aldrig har jeg da hørt noget så hjernedødt.. Det er der ingen hemmelighed at jeg bruger eksperten til at få hjælp med mine projekter - Er det ikke det den skal bruges til?

Og mønster? Hvad snakker du om - At jeg ikke giver folk point når de svarer??
Jo jeg giver gladelig point, når jeg får et ordentligt svar.. Jeg skrev dette spørgsmål for at finde en bedre funktion en den jeg havde, det fik jeg at vide at det fandtes ikke, så derfor lukkede jeg.. Jeg synes på ingen måde at dit svar var 100 point værd - sorry to say!!

Det er sateme for plat!

//Bruhn

P.S.: tjænt, staves tjent!
Avatar billede bruhnsweb Nybegynder
06. januar 2004 - 19:22 #23
får = for
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester