Redigerer
Modul:Statistikk
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
local p = {} require "mw.ustring" -- fra https://sv.wikipedia.org/w/index.php?title=Modul:Statistik&oldid=24271991 function p.tilfeldigtrekning(frame) local res = "" local verdi = frame.args['verdi'] if (not verdi) then return "Parameterfeil: Obligatorisk parameter 'verdi' mangler!" end local table verdiliste = mw.text.split(verdi,",",true) local absoluttfrekvenser = frame.args['absoluttfrekvenser'] local relativfrekvenser = frame.args['relativfrekvenser'] local tilbakelegging = frame.args['tilbakelegging'] if (not tilbakelegging) then tilbakelegging = "" end local antall = frame.args['antall'] if (antall) then antall = tonumber(antall) else antall = 1 end local separator = frame.args['separator'] or "" if (absoluttfrekvenser) and (relativfrekvenser) then return "Parameterfeil: Både absolutte og relative frekvenser er angitt!" end local kolonner = frame.args['kolonner'] if (kolonner) then antallkolonner = tonumber(kolonner) end local tabellstil = frame.args['tabellstil'] local fastverdi = frame.args['fastverdi'] local table fast_verdi = {} if (fastverdi) then fast_verdi = mw.text.split(fastverdi,",",true) end local table posverdi = {} for i = 1, #fast_verdi-1, 2 do posverdi[tonumber(fast_verdi[i])] = tonumber(fast_verdi[i+1]) end math.randomseed(os.time()) if (relativfrekvenser) then local table relativfrekvensliste = mw.text.split(relativfrekvenser,",",true) if (#relativfrekvensliste ~= #verdiliste) then return "Parameterfeil: antall frekvenser (" .. #relativfrekvensliste .. ") er ikke lik antall verdier (" .. #verdiliste .. ")!" end if (kolonner) then res = res..'{|' if (tabellstil) then res = res..tabellstil end res = res..'\n' end for k=1,antall do if (kolonner) and (k % antallkolonner == 1 or antallkolonner == 1) then res = res..'|-\n' end if (posverdi[k]) then if (kolonner) then res = res..'|' end res = res .. verdiliste[posverdi[k]] if (kolonner) then res = res..'\n' end if (k < antall) and not (kolonner) then res = res .. separator end else tilfeldigtall = math.random() local ackfrekvens = 0 for i,v in ipairs(relativfrekvensliste) do ackfrekvens = ackfrekvens + tonumber(v) if (tilfeldigtall <= ackfrekvens) then if (kolonner) then res = res..'|' end res = res .. verdiliste[i] if (kolonner) then res = res..'\n' end if (k < antall) and not (kolonner) then res = res .. separator end break end end end end if (kolonner) then res = res.."|}\n" end return res end local table absoluttfrekvensliste = {} if (absoluttfrekvenser) then absoluttfrekvensliste = mw.text.split(absoluttfrekvenser,",",true) if (#absoluttfrekvensliste ~= #verdiliste) then return "Parameterfeil: antall frekvenser (" .. #absoluttfrekvensliste .. ") er ikke lik antall verdier (" .. #verdiliste .. ")!" end else if (tilbakelegging == "nei") then return "Parameterfeil: Tilbakelegging kan ikke være satt til nei uten at absoluttfrekvenser er angitt!" end for i,v in ipairs(verdiliste) do absoluttfrekvensliste[i] = 1 end end n = 0 for i,v in ipairs(absoluttfrekvensliste) do n = n + tonumber(v) end if (antall > n) and (tilbakelegging == "nei") then return "Parameterfeil: antall (" .. antall .. ") større enn antall objekter (" .. n .. ")!" end if (kolonner) then res = res..'{|' if (tabellstil) then res = res..tabellstil end res = res..'\n' end for k=1,antall do if (posverdi[k]) then if (tilbakelegging == "nei") then absoluttfrekvensliste[posverdi[k]] = absoluttfrekvensliste[posverdi[k]] - 1 n = n - 1 end end end for k=1,antall do if (kolonner) and (k % antallkolonner == 1 or antallkolonner == 1) then res = res..'|-\n' end if (posverdi[k]) then if (kolonner) then res = res..'|' end res = res .. verdiliste[posverdi[k]] if (kolonner) then res = res..'\n' end if (k < antall) and not (kolonner) then res = res .. separator end else tilfeldigtall = math.random(1,n) local ackfrekvens = 0 for i,v in ipairs(absoluttfrekvensliste) do absoluttfrekvensliste[i] = tonumber(v) ackfrekvens = ackfrekvens + tonumber(v) if (tilfeldigtall <= ackfrekvens) then if (kolonner) then res = res..'|' end res = res .. verdiliste[i] if (kolonner) then res = res..'\n' end if (k<antall) and not (kolonner) then res = res .. separator end if (tilbakelegging == "nei") then absoluttfrekvensliste[i] = absoluttfrekvensliste[i] - 1 n = n - 1 end break end end end end if (kolonner) then res = res.."|}\n" end return res end return p
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Forhåndsvis en side som bruker denne malen
Maler som brukes på denne siden:
Mal:Dokumentasjonsunderside
(
rediger
)
Modul:Statistikk/dok
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Modul
Diskusjon
English
Visninger
Les
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon