webForumDet fria alternativet

Vill ha dum Rnd()

.NET

14 svar · 359 visningar · startad av Erik Juhlin

Medlem sedan maj 200010 687 inlägg
Frågan#1

VBs Rnd() är för bra för mina syften. Jag använder den för att slumpa ut statistik. Men den ger en för bra spridning.

Någon som har tips på en dålig Rnd() funktion som är ojämnare?

Medlem sedan maj 2003924 inlägg
#2

Jag förstår inte riktigt vad du menar försök förklara bättre.

Medlem sedan maj 200010 687 inlägg
#3

Jag använder Rnd för att slumpa ut datum för att sen använda för statistik. När jag använder Rnd så blir spridningen jämn. Det blir dåligt med toppar utan alla år/månader/dagar får ungefär lika mycket. Jag vill ha mer varians.

Medlem sedan juli 200012 978 inlägg
#4

Du måste nog variera med seed. Alla Rnd har en given väg annars.

Medlem sedan maj 200010 687 inlägg
#5

Okej, hur gör jag det?

Medlem sedan juli 200012 978 inlägg
#6

försök så här:
http://www.vb-helper.com/crypto5.htm

Medlem sedan okt. 20023 030 inlägg
#7

Kör Randomize Timer innan första Rnd så ska du se att det blir lite varians på det. ;)

Medlem sedan maj 200010 687 inlägg
#8

Okej, tack. Körde bara med Randomize...

Medlem sedan juni 20022 599 inlägg
#9

Erik Juhlin skrev:

Det blir dåligt med toppar utan alla år/månader/dagar får ungefär lika mycket. Jag vill ha mer varians.

Fast då vill du egentligen snarare ha mindre varians? (Ren slump -> Stor spridning -> Jämn fördelning -> Stor varians.)

Här står lite om hur du kan vikta slumptal: http://www.adit.co.uk/html/random_numbers.html

Medlem sedan maj 200010 687 inlägg
#10

Jag vill alltså ha mer varians mellan de olika dagarna. Inte mer spridning.

Medlem sedan juli 200012 978 inlägg
#11

En stor mängd slump blir ju med tiden fördelat. Du söker nog något annat? Prova med att ta en input från något som redan finns och som mer liknar din statistik värld! Eller vad du vill visa.
Om det är veckan du vill illustrera kan du skapa sju tal som representerar volymen först.

Medlem sedan maj 200010 687 inlägg
#12

Jo, men i datorvärlden finns ju inte äkta slump. Och datorslump blir ju då inte helt jämnt fördelat.
Men det kan vara bättre och sämre slump vilket fördelar det olika bra. Jag vill ha en dålig slump som fördelar ojämnt! :)

Annars så ser mina staplar så tråkiga ut. :)

Medlem sedan juni 20022 599 inlägg
#13

Jag vill alltså ha mer varians mellan de olika dagarna.

Ja, jo. Men definitionen på äkta slump är ju just att alla dagar ska bli lika sannolika. Vill du att vissa dagar ska bli vanligare än andra så måste du till att börja med bestämma hur: ska söndagar vara vanligare än onsdagar? ska dagar i Juli vara vanligare än dagar i Februari. Och sen i kod "vikta" efter det.

Ett annat sätt att få ojämn fördelning är helt enkelt att slumpa ett lågt antal ggr.

Medlem sedan maj 200010 687 inlägg
#14

Provar detta nu: r2 = (Timer Mod 10) / 10
Känns som att det kan funka bättre. :)

Medlem sedan juni 20022 599 inlägg
#15

Erik Juhlin skrev:

Jag vill ha en dålig slump som fördelar ojämnt!

Här står lite om vilken algoritm VB använder för att generera slumptal:

x1 = ( x0 * a + c ) MOD (2^24)

Vill du ha en "sämre" så kan du också prova att ändra i den.

264 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)