hur programmerar man egentligen slump?!?

Här diskuteras programmering och utveckling
Användarvisningsbild
Chippen
Inlägg: 1237
Blev medlem: 05 jun 2006, 18:15
Ort: Haninge Kommun

hur programmerar man egentligen slump?!?

Inlägg av Chippen »

Jag har funderat på en sak... hur har man egentligen gjort för att imitera slump i datorer... visst har jag skrivit tärningar och liknande, men då använder man ju färdiga slump funktioner... men hur ser dem funktionerna ut egentligen, det övergår mitt förstånd...
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

SV: hur programmerar man egentligen slump?!?

Inlägg av Emil.s »

Vad jag vet så använder datorn systemklockan, och sedan generera ett nummer från den. Bör ju inte vara allt för svårt att göra en egen slump funktion egentligen.  8)
Home sweet ~/ = http://sandnabba.se
Användarvisningsbild
Chippen
Inlägg: 1237
Blev medlem: 05 jun 2006, 18:15
Ort: Haninge Kommun

SV: hur programmerar man egentligen slump?!?

Inlägg av Chippen »

ganska smart... hur djup är systemklockan, alltså räknar den sekunder, räknar den hundradelar??
Christian Johansson
Inlägg: 1235
Blev medlem: 17 feb 2007, 20:31
OS: Xubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Eslöv

SV: hur programmerar man egentligen slump?!?

Inlägg av Christian Johansson »

Jag stötte på slumptal en del när jag studerade på LTH men det var rätt länge sedan nu. Jag har för mig att det fanns krav i en kurs i stokastiska processer eller liknande på att följden av tal skulle vara repeterbar och talen skulle vara oberoende och lika fördelade för att det skulle vara en bra slumptalsgenerator. Vi använde i någon annan kurs där vi behövde slumptal en algoritm från en vetenskaplig artikel som skulle ge sådana egenskaper. Senare såg jag i källkod på Ericsson i Lund att man använde exakt samma algoritm med hänvisning till samma artikel för att generera slumptal så det berodde nog på kontakterna med LTH som bara låg några meter därifrån.
Användarvisningsbild
Bossieman
Inlägg: 2704
Blev medlem: 27 dec 2006, 23:11
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS
Ort: Göteborg
Kontakt:

SV: hur programmerar man egentligen slump?!?

Inlägg av Bossieman »

Det här med slumptal är ytterst klurigt och de skapar mycket frågeställningar.

Det måste finnas ramar för vilka tal som kan användas. T.ex. välj ett heltal mellan 1 och 10 definierar ett omfång av vilka tal som vi ska använda som underlag för slumpen. Detta är  isig då stridande mot att skapa ett slumptal. Hur kan det vara et tslumptal när vi definierat vilka resultat det kan bli?

Slumptal, äkta går inte att få fram då det finns en begränsning i mätmetoderna. Men vi kan få fram slumptal som följer vissa ramar. T.ex.

1. Talet är mellan 1 och 10
2. Det får högst ha 3 decimaler.

Detta ger oss 9000 tal att välja slumpmässigt mellan, men inget av talen är slumptal. Hoppas detta inte verkar för flummigt.
*********************************************
* Detta meddelande har granskats av FRA *
*********************************************
Användarvisningsbild
Chippen
Inlägg: 1237
Blev medlem: 05 jun 2006, 18:15
Ort: Haninge Kommun

SV: hur programmerar man egentligen slump?!?

Inlägg av Chippen »

Jag tror jag försår lite vad du menar bossieman, och det var lite det svaret jag hade hoppats på... alltså att det är omöjligt att slumpa tal om man har metoder som bygger på givna tal... (om jag förstod dig rätt vill säga?)

Dock kan man imitera slump genom det Christian Johansson talar om?
Användarvisningsbild
Bossieman
Inlägg: 2704
Blev medlem: 27 dec 2006, 23:11
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS
Ort: Göteborg
Kontakt:

SV: hur programmerar man egentligen slump?!?

Inlägg av Bossieman »

Precis, det är lite som att man ställs inför följande val

Anta att du befinner dig i origo och du ska ta ett steg i en slumpmässig riktning och vi säger att du kan ta detta steget slumpmässigt. Vad är då sannolikheten att du hamnar där du hamnade eller vad är sannolikheten att du valde en viss riktning?
Senast redigerad av 1 Bossieman, redigerad totalt 13 gånger.
*********************************************
* Detta meddelande har granskats av FRA *
*********************************************
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

SV: hur programmerar man egentligen slump?!?

Inlägg av Emil.s »

Chippen skrev: ganska smart... hur djup är systemklockan, alltså räknar den sekunder, räknar den hundradelar??
Hundradelar bör den ju räkna med. Det gör ju ett vanligt stoppur i en armbandsklocka.
Och om programmet då tar 10 hundradelar, och sen gör om det till kanske milliondelar så blir det ju en del.
Men nog är det klurigt som Bossieman säger.  8)

Men för att få något slumpat så lär man ju ha något som är oregelbundet. Förslagsvis tiden. :)
Home sweet ~/ = http://sandnabba.se
Användarvisningsbild
Smygis
Inlägg: 849
Blev medlem: 21 jun 2006, 18:41
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Kramfors

SV: hur programmerar man egentligen slump?!?

Inlägg av Smygis »

Det gör man inte, För att citera Pythons beskrivning av deras random modul "Generate pseudo-random numbers". Man kan aldrig få riktiga slumpal med en dator. I och med att datorn bara kan räkna på datan man säger åt den att räkna på och kan endast behandla den på det sätt man säger åt den att behandla den på. Så går det inte att få riktiga slumptal.

Som man gör nu tar man helt enkelt en siffra (Oftast sekunder sedan Unix epoch, 00:00:00 UTC, January 1, 1970. Eller föregående framslumpade tal.) och kör den siffran gennom en algorithm så det ser ut som att det är ett slumptal.
A Foolish Consistency is the Hobgoblin of Little Minds.Beware: In C++, your friends can see your privates!
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

SV: hur programmerar man egentligen slump?!?

Inlägg av Lars »

Här är ett väldigt simpelt exempel på hur man kan generera pseudo-slumptal:

Kod: Markera allt

#!/usr/bin/python

x = 1

def rand():
    global x
    x = (1366*x + 150889) % 714025
    return x

for a in range(100):
    print rand()
Observera att det här ger en helt deterministisk talserie, men den beter sig "slumpmässigt". För att inte få samma talserie varje gång brukar man sätta startvärdet till aktuellt klockslag t.ex. Om man har krav på distribution, tid mellan upprepning o.s.v. så får man använda mer avancerade algoritmer.

Linux genererar slumptal som kan läsas från /dev/random och /dev/urandom, det sker bl.a. genom att mäta nätverkstrafik och tangenttryckningar för att få in mer "riktigt" slump i det hela.
Användarvisningsbild
rancor
Inlägg: 1649
Blev medlem: 18 maj 2006, 23:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

SV: hur programmerar man egentligen slump?!?

Inlägg av rancor »

Ett sätt kan vara att filma en lavalampa och generera värden av själva utseendet som lavaklumpen har då man önskar ett slumpvärde. Då borde man få det frö man är ute efter.

Lika så borde vara att sätta upp en kamera över en hårt trafikerad väg samt mäta buller, vindhastighet och luftfuktighet och göra någon smart beräkning av dessa värden.
Användarvisningsbild
Galgalid
Inlägg: 1646
Blev medlem: 08 dec 2006, 12:30

SV: hur programmerar man egentligen slump?!?

Inlägg av Galgalid »

Good luck ^^
Användarvisningsbild
Mekaniserad Apelsin
Hedersmedlem
Inlägg: 3777
Blev medlem: 27 maj 2006, 12:24
OS: Ubuntu
Ort: Stockholm
Kontakt:

SV: hur programmerar man egentligen slump?!?

Inlägg av Mekaniserad Apelsin »

rancor skrev: [...]filma en lavalampa [...] sätta upp en kamera över en hårt trafikerad väg samt mäta buller, vindhastighet och luftfuktighet [...]
Eller så köper man hårdvara som faktiskt genererar äkta helt randomatiserade talserier...

De är svindyra och använder faktiskt något som i verkligheten är "random" (så vitt vi vet idag): sönderfallande isotoper.
More Mekaniserad at http://blippe.se.
Användarvisningsbild
Sprak
Inlägg: 394
Blev medlem: 27 sep 2006, 22:55
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS
Ort: Götet/Vänersborg

SV: hur programmerar man egentligen slump?!?

Inlägg av Sprak »

Mekaniserad Apelsin skrev: sönderfallande isotoper.
Kul att sitta brevid en radioaktiv dator...
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

SV: hur programmerar man egentligen slump?!?

Inlägg av Lars »

Hm, undrar om man kan bygga om en brandvarnare till en slumpgenerator på något sätt, kunde ju vara ett kul projekt ...
Användarvisningsbild
Louie
Inlägg: 2361
Blev medlem: 15 nov 2006, 10:15
OS: Ubuntu
Utgåva: 18.04 Bionic Beaver LTS
Ort: Göteborg
Kontakt:

SV: hur programmerar man egentligen slump?!?

Inlägg av Louie »

Eller så löser du ut slumtal från myrornas krig på tv eller tar in bakgrundsstrålning från rymden. Bara några av de saker jag brukar göra när jag har tråkigt  ::)
Ett väl utfört arbete ger en inre tillfredsställelse och är den grund var på samhället vilar.
Linuxuser - Fri webhosting åt folket!
IRC: Louie` @ #kurbitz freenode - Jabber: PM för jabber
Användarvisningsbild
madbear
Inlägg: 209
Blev medlem: 09 jan 2007, 13:49
OS: PCLinuxOS
Ort: Karlstad

SV: hur programmerar man egentligen slump?!?

Inlägg av madbear »

Louie skrev: Eller så löser du ut slumtal från myrornas krig på tv eller tar in bakgrundsstrålning från rymden. Bara några av de saker jag brukar göra när jag har tråkigt  ::)
myrornas krig är väl data? inte slump!
Användarvisningsbild
Barre
Inlägg: 2298
Blev medlem: 13 dec 2006, 10:23
OS: Ubuntu
Ort: Stockholm
Kontakt:

SV: hur programmerar man egentligen slump?!?

Inlägg av Barre »

i linux har du två device-filer
/dev/random
/dev/urandom


dessa två är character baserade device filer (oj, vilken snygg svenska) är ett interface in i linuxkärnans slumpgenerator.
slumpgeneratorn samlar på "störningar" från datorn, t.ex störningar från diverse device drivers till en pool av bitar.
/dev/random lämnar ifrån sig bytes skapade från dessa bitar, och om poolen av bitar skulle ta slut så "hänger" den sig tills tillräkligt med bitar fyllts på i poolen igen.
/dev/urandom lämnar också ifrån sig bitar från kärnans slumpässigt skapade bit-pool, men om poolen skulle tömmas så "hänger" den inte. Istället så lämnar den ifrån sig en teoretisk skapad slump (som inte är så säker, men duger kanske för det mesta).

om jag inte missminner mig så fylls denna bit-pool på av musrörelser, disk-, cpu-, minnes- och tangentbordsaktivitet...
________________________________________________________________
twitter @ BarreGargamel
blogg @ Gargamel.NU
Användarvisningsbild
Hund
Inlägg: 16492
Blev medlem: 25 jan 2007, 04:15
OS: Gentoo
Ort: Norrland
Kontakt:

SV: hur programmerar man egentligen slump?!?

Inlägg av Hund »

scrav skrev:
Louie skrev: Eller så löser du ut slumtal från myrornas krig på tv eller tar in bakgrundsstrålning från rymden. Bara några av de saker jag brukar göra när jag har tråkigt  ::)
myrornas krig är väl data? inte slump!
Det engelska ordet låter tuffare - White noise ;D

Såhär säger Wikipedia:

Vitt brus är en signal som har genererats av en stokastisk process. Vitt brus kännetecknas av att det innehåller alla frekvenser med samma sannolikhet och genomsnittliga energi, och att dess autokorrelation är noll för alla nollskilda tidsdifferenser. Motsatsen är färgat brus. Eftersom vitt brus ska innehålla samma energi vid alla frekvenser blir det en fysikalisk omöjlighet, då detta skulle innebära oändlig energi. Man menar därför oftast "bandbegränsat vitt brus", det vill säga brus som kan anses vitt inom ett begränsat frekvensband, då man talar om vitt brus.

Bruset är bakgrundsstrålning, främst i form av radiovågor, som antennen tar emot. Strålningen härstammar till största delen från rymden, speciellt Solen.
Linuxkompis - En vänlig Linux-gemenskap för alla!
Användarvisningsbild
Mekaniserad Apelsin
Hedersmedlem
Inlägg: 3777
Blev medlem: 27 maj 2006, 12:24
OS: Ubuntu
Ort: Stockholm
Kontakt:

SV: hur programmerar man egentligen slump?!?

Inlägg av Mekaniserad Apelsin »

Hund skrev: Man menar därför oftast "bandbegränsat vitt brus", det vill säga brus som kan anses vitt inom ett begränsat frekvensband, då man talar om vitt brus.

Bruset är [...]trålningen härstammar till största delen från rymden, speciellt Solen.
Jag har alltid tyckt att de här säger mot varandra. Solens strålning följer ganska noggrant Planck's lag, och är därför inte "vitt" någonstans.
More Mekaniserad at http://blippe.se.
Skriv svar

Återgå till "Programmering och webbdesign"