Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.
|
|
- Edith Bundgaard
- 5 år siden
- Visninger:
Transkript
1 Denne guide er oprindeligt udgivet på Eksperten.dk Tilfældige tal Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge. Den forudsætter at man har lidt programmerings erfaring og kender lidt til de sprog jeg viser eksemplerne i (C, Java, C#). Skrevet den 14. Feb 21 af arne_v I kategorien Programmering / Generelt Historie: V /4/25 - original V1.1-29/12/28 - tilføj links V1.2-12/2/21 - smårettelser Hvad er tilfældige tal Ægte tilfældige tal er meget svære at generere. Dertil skal man bruge noget udefrakommende som er ægte tilfældigt. F.eks. radioaktiv spaltning af atomer. Det er ekstremt besværligt (læs: dyrt) at bruge til programmer så i praksis genererer man altid det man kalder pseudo tilfældige tal. Pseudo tilfældige tal er ikke spor tilfældige. De er 1% deterministiske. Men de har nogle egenskaber som ligner tilfældige tal så meget at de i langt de fleste tilfælde er lige så gode at bruge. Alle nedenstående eksempler drejer sig om det man kalder uniformt fordelte tal d.v.s. at alle tal har samme sandsynelighed for at blive udtrukket. Fornuftig brug af indbyggede tilfældige tal generatorer Rng.c #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 1 #define K 1 int main() int i,rani;
2 double ranx; /* initialize random generator */ srand(time(null)); for(i=;i<n;i++) /* generate random integer in the range from (inclusive) to K-1 (inclusive) */ rani = rand() % K; printf("%d\n",rani); for(i=;i<n;i++) /* generate random double in the range. (inclusive) to 1. (exclusive) */ ranx = rand() / (double)(rand_max + 1); printf("%f\n",ranx); return ; Rng.java import java.util.random; public class Rng public final static int N = 1; public final static int K = 1; public static void main(string[] args) // initialize random generator Random rng = new Random(); for(int i=;i<n;i++) // generate random integer in the range from (inclusive) to K-1 (inclusive) int rani = rng.nextint(k); System.out.println(rani); for(int i=;i<n;i++) // generate random double in the range. (inclusive) to 1. (exclusive) double ranx = rng.nextdouble(); System.out.println(ranx); Rng.cs using System;
3 public class Rng public const int N = 1; public const int K = 1; public static void Main(string[] args) // initialize random generator Random rng = new Random(); for(int i=;i<n;i++) // generate random integer in the range from (inclusive) to K-1 (inclusive) int rani = rng.next(k); Console.WriteLine(rani); for(int i=;i<n;i++) // generate random double in the range. (inclusive) to 1. (exclusive) double ranx = rng.nextdouble(); Console.WriteLine(ranx); Uheldig brug af tilfældige tal generatorer Er output fra ovenstående så "passende tilfældigt"? De er ikke perfekte, men de er rimeligt fornuftige. GoodRng.Java import java.util.random; public class GoodRng public final static int N = 5; public final static int K = 1; public static void main(string[] args) Random rng = new Random(); int[] one = new int[k]; int[][] two = new int[k][k]; int[] a = new int[n]; for(int i=; i<n; i++) a[i] = rng.nextint(k); for(int i=; i<n; i++) one[a[i]]++; int last = a[]; for(int i=1;i<n;i++)
4 two[last][a[i]]++; last = a[i]; for(int i=; i<k; i++) System.out.println(one[i]); for(int i=; i<k; i++) for(int j=; j<k; j++) System.out.print(" " + two[i][j]); System.out.println(); Output [I vil se det her output mange gange i denne artikel. Først vises fordelingen af tal - og den skal selvfølgelig gerne være jævn. Derefter vises fordelingen af tal, når det forrige tal kendes - og den skal også gerne være jævn] Men der skal ikke meget til at ødelægge de pæne egenskaber. Reinitialising af algoritme for hvert tal. En rigtig klassiker. Når en initialisering for alle tallene er tilfældig så må en initialisering for hvert tal da være endnu mere tilfældig. BadRng1.java
5 import java.util.random; public class BadRng1 public final static int N = 5; public final static int K = 1; public static void main(string[] args) int[] one = new int[k]; int[][] two = new int[k][k]; int[] a = new int[n]; for(int i=; i<n; i++) Random rng = new Random(); // <---- initialize for every number a[i] = rng.nextint(k); for(int i=; i<n; i++) one[a[i]]++; int last = a[]; for(int i=1;i<n;i++) two[last][a[i]]++; last = a[i]; for(int i=; i<k; i++) System.out.println(one[i]); for(int i=; i<k; i++) for(int j=; j<k; j++) System.out.print(" " + two[i][j]); System.out.println(); Output
6 Tallene er overhovedet ikke tilfældige. Problemet er at initialiseringen bruger tiden som basis for de tilfældige tal. Så forskellige random generatorer initialiseret indenfor samme millisekund vil normalt give samme tal- Løsningen er som i GoodRng.java ovenfor kun at initialisere en gang. Ofte er det en fordel at lave det som en class eller instans variabel: public static final Random rng = new Random(); Uheldig skalering. Ofte har man allerede en metode som returnerer et tilfældigt tal og det kan man da bare skalere. Et tilfældigt tal skaleret må da også være tilfældigt. BadRng2.cs using System; public class BadRng2 public const int N = 5; public const int K = 1; public static void Main(string[] args) Random rng = new Random(); int[] one = new int[k]; int[,] two = new int[k,k]; int[] a = new int[n]; for(int i=; i<n; i++) a[i] = rng.next(15) % K; // scale random numner..14 to..9 for(int i=; i<n; i++) one[a[i]]++; int last = a[]; for(int i=1;i<n;i++) two[last,a[i]]++; last = a[i]; for(int i=; i<k; i++)
7 Console.WriteLine(one[i]); for(int i=; i<k; i++) for(int j=; j<k; j++) Console.Write(" " + two[i,j]); Console.WriteLine(); [det er sjældent så åbenlyst i koden som her, men problemet er helt det samme uanset at rng.next(15) eventuelt er gemt væk i en metode i en anden klasse] Output Tallene er overhovedet ikke tilfældige. Problemet er at 1 ikke går op i 15 og at 1 er tæt på 15, hvilket gør at der bliver en meget skæv fordeling. Hvis den første modulus værdi er tilpas stor i forhold til den sidste modulus værdi, så har fænomenet ingen praktisk betydning. Bemærk at følgende variant ikke løser problemet:
8 using System; public class BadRng2NotFix public const int N = 5; public const int K = 1; public static void Main(string[] args) Random rng = new Random(); int[] one = new int[k]; int[,] two = new int[k,k]; int[] a = new int[n]; for(int i=; i<n; i++) a[i] = (int)((rng.next(15) / 15.) * K); // scale random numner..14 to..9 for(int i=; i<n; i++) one[a[i]]++; int last = a[]; for(int i=1;i<n;i++) two[last,a[i]]++; last = a[i]; for(int i=; i<k; i++) Console.WriteLine(one[i]); for(int i=; i<k; i++) for(int j=; j<k; j++) Console.Write(" " + two[i,j]); Console.WriteLine(); Output
9 Løsningen er aldrig at arbejde videre på tilfældige tal som allerede er skaleret ned en gang. Hvis man skal skalere den indbyggede RNG ned til noget, så bør trække et nyt tal hvis man får noget >= (MAX_RAND / K) * K. Uheldig kombination af tilfældige tal. Hvis man har 2 gode random generatorer så må man da kunne kombinere dem til en endnu bedre. BadRng3.cs using System; public class BadRng3 public const int N = 5; public const int K = 1; public static void Main(string[] args) Random rng = new Random(); int[] one = new int[k]; int[,] two = new int[k,k]; int[] a = new int[n]; for(int i=; i<n; i++) a[i] = (rng.next(k) + rng.next(k)) / 2; // average of two random numbers..9 for(int i=; i<n; i++) one[a[i]]++; int last = a[]; for(int i=1;i<n;i++) two[last,a[i]]++;
10 last = a[i]; for(int i=; i<k; i++) Console.WriteLine(one[i]); for(int i=; i<k; i++) for(int j=; j<k; j++) Console.Write(" " + two[i,j]); Console.WriteLine(); Output Tallene er overhovedet ikke tilfældige. Det bliver en meget skæv fordeling. Det kræver en meget fin forståelse for matematik at lave noget der kan kombinere 2 random generatorer til en. [artiklen "Mere om tilfældige tal" har eksempler på sådanne kombinationer der giver en korrekt fordeling]
11 Løsningen i praksis er at undgå den slags kombinationer. Brug af dårlige low bits. Man skal være meget forsigtig med at tage modulus med potenser af 2. BadRng4.c #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 #define K 4 static unsigned long int seed; void mysrand(unsigned long int ss) seed = ss; return; unsigned long int myrand() /* seed = (65539UL * seed) % UL; */ unsigned long int help1 = UL % 65539UL; unsigned long int help2 = UL / 65539UL; long int tmp = 65539UL * (seed % help2) - help1 * (seed / help2); if(tmp >= ) seed = tmp; else seed = tmp UL; return seed; int main() int i,j,last,one[k],two[k][k],a[n]; mysrand(time(null)); for(i=;i<n;i++) a[i] = myrand() % K; for(i=; i<k; i++) one[i] = ; for(i=; i<n; i++) one[a[i]]++; for(i=; i<k; i++) for(j=; j<k; j++) two[i][j] = ; last = a[]; for(i=1;i<n;i++) two[last][a[i]]++; last = a[i];
12 for(i=; i<k; i++) printf("%d\n",one[i]); for(i=; i<k; i++) for(j=; j<k; j++) printf(" %d",two[i][j]); printf("\n"); return ; [tænk ikke så meget over algoritmen - den er ikke god, men var ikke desto mindre meget anvendt for 3 år siden] Output Tallene er overhovedet ikke tilfældige, hvilket skyldes at den algoritme genererer rimeligt tilfældige high bits men meget dårlige tilfældige low bits, og vi kigger jo kun på de 2 laveste bits. Så en oplagt løsning er jo at bruge high bits. BadRng4Fix.c #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 #define K 4 static unsigned long int seed; void mysrand(unsigned long int ss) seed = ss; return;
13 unsigned long int myrand() /* seed = (65539UL * seed) % UL; */ unsigned long int help1 = UL % 65539UL; unsigned long int help2 = UL / 65539UL; long int tmp = 65539UL * (seed % help2) - help1 * (seed / help2); if(tmp >= ) seed = tmp; else seed = tmp UL; return seed; int main() int i,j,last,one[k],two[k][k],a[n]; mysrand(time(null)); for(i=;i<n;i++) a[i] = (myrand() / ) * K; for(i=; i<k; i++) one[i] = ; for(i=; i<n; i++) one[a[i]]++; for(i=; i<k; i++) for(j=; j<k; j++) two[i][j] = ; last = a[]; for(i=1;i<n;i++) two[last][a[i]]++; last = a[i]; for(i=; i<k; i++) printf("%d\n",one[i]); for(i=; i<k; i++) for(j=; j<k; j++) printf(" %d",two[i][j]); printf("\n"); return ; Output
14 Man kan selvfølgelig også bruge en anden algoritme. BadRng4Alt.c #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 #define K 4 int main() int i,j,last,one[k],two[k][k],a[n]; srand(time(null)); for(i=;i<n;i++) a[i] = rand() % K; for(i=; i<k; i++) one[i] = ; for(i=; i<n; i++) one[a[i]]++; for(i=; i<k; i++) for(j=; j<k; j++) two[i][j] = ; last = a[]; for(i=1;i<n;i++) two[last][a[i]]++; last = a[i]; for(i=; i<k; i++) printf("%d\n",one[i]); for(i=; i<k; i++) for(j=; j<k; j++) printf(" %d",two[i][j]); printf("\n"); return ; Output
15 Men den første workaround er faktisk bedre medmindre man er meget sikker på egenskaberne af den alternative algoritme man bruger. Videre Se artiklerne: * "Mere om tilfældige tal" som giver lidt flere eksempler, forklarer lidt teori og viser nogle anerkendte algoritmer * "Endnu mere om tilfældige tal" som forklarer lidt mere teori og har nogle eksempler i PHP og ASP Kommentar af simonvalter d. 25. Apr 25 1 meget interessant Kommentar af md_craig d. 5. Aug 26 2 ""ægte tilfældigt. F.eks. radioaktiv spaltning af atomer."" - der er mig bekendt ikke noget endegyldigt bevis for at det er tilfældigt... og jeg tror desuden på Tilfældighed som en definition på noget som ikke eksistere (Filosofisk) ""Hvis man har 2 gode random generatorer så må man da kunne kombinere dem til en endnu bedre."" - Vil våge den påstand med kendskab til sandsynligheds beregning, at outputtet her er i aller fineste orden... Man skal jo kende til sandsynligheds begreper Kommentar af mysitesolution d. 27. Jun 25 3 God artikle... Har selv "funderet" over ordet tilfældighed, og er kommet til den konklusion at der er intet der er tilfældigt :/ (nu kender jeg ikke lige det med atom spaltning, så ved ikke om det er VIRKELIG tilfældigt, men tror det ikke), og er samtidig kommet til den overbevisning at vi mangler en mellemting mellem held og uheld, dvs. det neutrale.. :/ hmm Kommentar af ofirpeter d. 2. Apr 25 4 Kommentar af over-load d. 22. Apr 25 5 =) Arne_v kvalitet Kommentar af wicez (nedlagt brugerprofil) d. 19. Apr 25 6 God artikel. Værd at læse, selvom man ikke kender til nogen af de 3 sprog er det meget godt baggrundsviden. Kommentar af visualdeveloper d. 17. Oct 25 7 god artikel ;) Kommentar af hyberpreprocessor d. 19. Apr 25 8
16 nice, gad vide hvad lotto systemet så bruger :D:D Kommentar af phoenix2 d. 22. Apr 25 9 Hvad er et falsk tilfældigt tal?
Mere om tilfældige tal
Denne guide er oprindeligt udgivet på Eksperten.dk Mere om tilfældige tal Denne artikel bygger oven på den forrige artikel om tilfældige tal. Den forudsætter at man har læst den forrige artikel og har
Læs mereEndnu mere om tilfældige tal
Denne guide er oprindeligt udgivet på Eksperten.dk Endnu mere om tilfældige tal Denne artikel bygger oven på de to forrige artikler om tilfældige tal. Den indeholder lidt matematik og anvendelse på PHP
Læs mereSingleton pattern i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.
Læs mereHvilket sprog er hurtigst
Denne guide er oprindeligt udgivet på Eksperten.dk Hvilket sprog er hurtigst Denne artikel forsøger at aflive forskellige myter om hvilke sprog der er hurtigst. Den forudsætter ikke noget særligt. Skrevet
Læs mereDen forudsætter kendskab til XML og C# men ikke til brug af XML i C#.
Denne guide er oprindeligt udgivet på Eksperten.dk Brug af XML i C# Denne artikel vil vise lidt om hvordan man kan bruge XML i C#. Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#.
Læs mereSingleton pattern i C#
Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i C# Denne artikel beskriver Singleton pattern og implementation i C#. Den forudsætter kendskab til C# men ikke til Singleton. Der er
Læs mereThreads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter
Læs mereParameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET.
Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET. Der findes en tilsvarende artikel med
Læs mereRMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).
Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer
Læs mereBits, bit operationer, integers og floating point
Denne guide er oprindeligt udgivet på Eksperten.dk Bits, bit operationer, integers og floating point Denne artikel beskriver hvordan data gemmes som bits og hvordan man kan manipulere med bits. Den forudsætter
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2
DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld
Læs mereclass Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.
Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:
Læs mere//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!
Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for
Læs mereHvad er Objekter - Programmering
Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som
Læs merePrepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.
Denne guide er oprindeligt udgivet på Eksperten.dk Prepared Statements Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC. Skrevet den 18. Feb 2010
Læs mereAnvendelse af metoder - Programmering
Denne guide er oprindeligt udgivet på Eksperten.dk Anvendelse af metoder - Programmering En forhåbentlig rigtig god forklaring på hvad metoder er og hvordan de anvendes. Lidt om private og public, retur
Læs mereSend fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende fra Java.
Denne guide er oprindeligt udgivet på Eksperten.dk Send email fra Java Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende email fra Java. Simple eksempler ikke noget vildt
Læs mereSom sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste
Denne guide er oprindeligt udgivet på Eksperten.dk Indkøbsvogn i PHP I denne artikel vil jeg prøve at lave en indkøbskurv som let kan udvides, og som ikke er svær at forstå. Det er bedst med viden om OOP(klasser),
Læs mereEksempel: Skat i år 2000
Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)
Læs mereMySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.
Denne guide er oprindeligt udgivet på Eksperten.dk MySQL C API Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab
Læs mereDatabase design for begyndere
Denne guide er oprindeligt udgivet på Eksperten.dk Database design for begyndere Denne artikel beskriver hvordan man kommer fra ide til database design. Den stopper inden normal former. Den forudsætter
Læs mereJacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense
7 DM -. Obligatoriske Opgave Løsning af ligningssystem vha. fipunktmetoden Jacob Christiansen, 8 moffe@imada.sdu.dk Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense. Opgaven Der skal implementeres
Læs mereArrays i PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 04. Feb 2009 af taskmgr I kategorien Programmering / PHP
Denne guide er oprindeligt udgivet på Eksperten.dk Arrays i PHP De fleste som har skrevet omfattende scripts, er før eller siden stødt på problemet med at de bliver vanskelige at overskue hvis man bruger
Læs mereIntroduktion til SQL queries
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til SQL queries Denne artikel beskriver nogle forskellige muligheder i SQL queries. Eksemplerne skulle gerne være standard SQL og virke i
Læs mereI denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.
Denne guide er oprindeligt udgivet på Eksperten.dk Grundlæggende PHP I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.
Læs mereTest med JUnit 3. Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det.
Denne guide er oprindeligt udgivet på Eksperten.dk Test med JUnit 3 Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det. Den forudsætter kendskab
Læs mereProgrammering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.
Programmering 1999 Forelæsning 5, tirsdag 14. september 1999 Oversigt Mere om klasser og objekter Klassefelter: static Konstante felter: final Indkapsling og synlighed: private og public Overlæsning af
Læs mereMartin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox
Martin Olsen DM0 Projekt 0 Del I. marts 0 FOTO: Colourbox Indhold Indledning... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Kildekode til SimpleInv.java... Kildekode til MergeSort.java...
Læs mereUndtagelseshåndtering i C#
Denne guide er oprindeligt udgivet på Eksperten.dk Undtagelseshåndtering i C# I modsætning til C++ kan man i C# ikke skrive et program uden undtagelseshåndtering, så derfor har jeg skrevet denne guide
Læs mereDM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11
DM01 DM01 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 18/3-2003 Side 1 af 11 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DILEMMA:...4 2.1.1 METODER:...4
Læs mereJava Klasse nedarvninger
Denne guide er oprindeligt udgivet på Eksperten.dk Java Klasse nedarvninger Et let lille overblik i hvordan klasse nedarvning virker i java Skrevet den 07. dec 2011 af mochners I kategorien Programmering
Læs mereDen forudsætter kendskab til XML og VB.NET men ikke til brug af XML i VB.NET.
Denne guide er oprindeligt udgivet på Eksperten.dk Brug af XML i VB.NET Denne artikel vil vise lidt om hvordan man kan bruge XML i VB.NET. Den forudsætter kendskab til XML og VB.NET men ikke til brug af
Læs mereKontrol-strukturer i PHP
Denne guide er oprindeligt udgivet på Eksperten.dk Kontrol-strukturer i PHP Denne artikel gennemgår kontrolstrukturer i PHP. 'if', 'switch', 'while' og 'for' bliver gennemgået. Den forudsætter lidt grundlæggende
Læs mereRMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer.
Denne guide er oprindeligt udgivet på Eksperten.dk RMI avanceret Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer. Den forudsætter
Læs mereDen forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.
Denne guide er oprindeligt udgivet på Eksperten.dk Brug af MySQL i C++ Denne artikel bygger ovenpå artiklen "MySQL C API" og forklarer hvordan man kan programmere mere objekt orienteret. Den forudsætter
Læs mereMed register_globals = On får du automatisk adgang til en række variabelnavne i dit script.
Denne guide er oprindeligt udgivet på Eksperten.dk Register Globals Off Lad os slå en ting fast med det samme - register_globals = Off er en god ting, i hvert fald set ud fra et sikkerhedsmæssigt synspunkt.
Læs mereLogging i Java. Den forudsætter kendskab til Java og noget generel udviklings erfaring. Denne guide er oprindeligt udgivet på Eksperten.
Denne guide er oprindeligt udgivet på Eksperten.dk Logging i Java Denne artikel beskriver baggrunden for logging frameworks og viser hvordan man bruger 2 af de mest almindelige: Apache Log4J og J2SE/Java
Læs mereDelphi - CrackMe og Keygen
Denne guide er oprindeligt udgivet på Eksperten.dk Delphi - CrackMe og Keygen Dette er min første artikel! :) Men jeg synes nu den er blevet meget god! :D Jeg giver et et eksempel på hvordan man kan lave
Læs mereHvilket sprog skal jeg lære?
Denne guide er oprindeligt udgivet på Eksperten.dk Hvilket sprog skal jeg lære? Denne artikel snakker lidt løst og fast om den kendte problem stilling med hvilket sprog man skal lære (generelle programmerings
Læs mereapplikation----x----odbc driver manager----foobar ODBC driver----foobar database
Denne guide er oprindeligt udgivet på Eksperten.dk ODBC i C/C++ Denne artikel beskriver hvordan man bruger ODBC i C/C++. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab
Læs mereXML parsning i Java. Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM.
Denne guide er oprindeligt udgivet på Eksperten.dk XML parsning i Java Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM. Den forudsætter kendskab til Java og XML.
Læs mereIntroduction til.net remoting i C#
Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i C# Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i C#. Den forudsætter kendskab
Læs mereSkrevet den 18. Feb 2010 af arne_v I kategorien Programmering / Visual Basic.NET
Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til VB.NET og ADO.NET. Der findes en tilsvarende artikel
Læs mereProgrammering i C. Lektion september 2009
Programmering i C Lektion 2 14. september 2009 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf 2 / 27 Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler
Læs mereIntroduktion til AOP i C#
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til AOP i C# Denne artikel giver en introduktion AOP (Aspect Oriented Programming) i C#. Den forudsætter et pænt kendskab til programmering,
Læs mereDM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/
DM502 Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!
Læs mereKursus i OOP og Java. Kursus i Objektorienteret programmering i Java
Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11
DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void
Læs mereArkitektur for begyndere
Denne guide er oprindeligt udgivet på Eksperten.dk Arkitektur for begyndere Denne artikel beskriver forskellige basale n-tier arkitekturer. Som man bør kende og have valgt inden man går igang med at udvikle
Læs mereAt klippe en streng over på det mest hensigtsmæssige sted
Denne guide er oprindeligt udgivet på Eksperten.dk At klippe en streng over på det mest hensigtsmæssige sted Formålet med denne artikel er at kaste lidt lys over, hvordan man klipper en streng over på
Læs mereOffset til terminalskærm i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Offset til terminalskærm i Java Ikke en atikkel - men en Classe til java der gør det nemt at skrive ud på avancerede måder når man kun opererer i dosvindue.
Læs mereTagwall med Php & MySQL
Denne guide er oprindeligt udgivet på Eksperten.dk Tagwall med Php & MySQL Her laver vi en tagwall i Php & MySQL... jeg forklarer dog ikke så meget, men jeg håber du kan få det til at blive til en tagwall
Læs mereKursus navn: Indledende programmering Kursus nr. 02101
Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning
Læs mereGeografisk lokalisering i ASP.NET
Denne guide er oprindeligt udgivet på Eksperten.dk Geografisk lokalisering i ASP.NET Denne artikel forklarer lidt om hvorfor og hvordan man laver geografisk lokalisering og viser noget kode. Der er andre
Læs mereSådan skriver du artikler til Eksperten!
Denne guide er oprindeligt udgivet på Eksperten.dk Sådan skriver du artikler til Eksperten! Når du skriver artikler handler det om at få den ud til de rigtige personer, og vise den frem så den er let forståelig.
Læs mereBRP 6.9.2006 Kursusintroduktion og Java-oversigt
BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang Kursusintroduktion:
Læs mereIntroduction til.net remoting i VB.NET
Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i VB.NET Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i VB.NET. Den forudsætter
Læs mereLøsning af møntproblemet
Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet
Læs mereDatabase tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk
Denne guide er oprindeligt udgivet på Eksperten.dk Database tips Denne artikel vil give nogle forskellige små praktiske råd om ting man skal tænke på når man arbejder med databaser og applikationer som
Læs mereTest med NUnit. Denne artikel introducerer NUnit. Den forklarer ideen med NUnit. Og den viser hvordan man konkret bruger det.
Denne guide er oprindeligt udgivet på Eksperten.dk Test med NUnit Denne artikel introducerer NUnit. Den forklarer ideen med NUnit. Og den viser hvordan man konkret bruger det. Den forudsætter kendskab
Læs mereAbstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Læs mereAAU, Programmering i Java Intern skriftlig prøve 18. maj 2007
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal
Læs mereProgrammering i C. Lektion november 2008
Programmering i C Lektion 3 18. november 2008 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler Kontrolstrukturer Udvælgelse Gentagelse
Læs mereAfsending af s vha. ASP
Denne guide er oprindeligt udgivet på Eksperten.dk Afsending af emails vha. ASP Det kan ofte være praktisk at afsende emails fra sin hjemmeside. Denne artikel tager udgangspunkt i komponenten JMail fra
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3
DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget
Læs mereLoginsystem (med MySQL)
Denne guide er oprindeligt udgivet på Eksperten.dk Loginsystem (med MySQL) Dette er en guide til, hvordan man kan lave et loginsystem med php og muligvis også med sessioner og MySQL Skrevet den 02. Feb
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 6
DM502 Forelæsning 6 Klasser og objekter Introduktion Math-klassen Indhold Klasser vs. objekter Først et tænkt eksempel: Vi vil lave en bil i Java 1. spørgsmål: Hvad karakteriserer en bil? Model År Farve...
Læs mereIntroduktion til funktioner, moduler og scopes i Python
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for
Læs mereProgrammering i C Videre med C (2 af 4) 19. marts 2007
Programmering i C Videre med C (2 af 4) 19. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan i dag Brush-up fra sidst Videre med C Kontrolløkker (while, for, ) Conditional Execution (if, if/else) Funktioner
Læs mereDM01 DM01. 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 13/5-2003. Side 1 af 7
DM01 DM01 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 13/5-2003 Side 1 af 7 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DNA2:...4 2.1.1 METODER:...4
Læs mereProgrammering i C. Lektion 4. 5. december 2008
Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )
Læs mereI denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal.
Denne guide er oprindeligt udgivet på Eksperten.dk Afrund til helt tal I denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal. Skrevet den 03. Feb 2009 af tjomsen I kategorien
Læs mereGeografisk lokalisering i JSP
Denne guide er oprindeligt udgivet på Eksperten.dk Geografisk lokalisering i JSP Denne artikel forklarer lidt om hvorfor og hvordan man laver geografisk lokalisering og viser noget kode. Der er andre artikler
Læs mereDynamisk PHP design OPDATERET
Denne guide er oprindeligt udgivet på Eksperten.dk Dynamisk PHP design OPDATERET I har måske undret jer over "http://bla.dk/?side=kontakt", her beskriver jeg hvordan, og hvorfor Skrevet den 03. Feb 2009
Læs mereUpload af billeder/filer for nybegyndere Del. 2
Denne guide er oprindeligt udgivet på Eksperten.dk Upload af billeder/filer for nybegyndere Del. 2 I denne Del vil jeg ikke gaa saa dybt i fil upload som i sidste. Jeg vil i stedet forklare om funktioner
Læs mereDet er muligt at chekce følgende opg. i CodeJudge: og
Det er muligt at chekce følgende opg. i CodeJudge:.1.7 og.1.14 Exercise 1: Skriv en forløkke, som producerer følgende output: 1 4 9 16 5 36 Bonusopgave: Modificer dit program, så det ikke benytter multiplikation.
Læs mereDatabase programmerings tips
Denne guide er oprindeligt udgivet på Eksperten.dk Database programmerings tips Denne artikel vil introducere nogle problem stillinger med flere samtidige brugere, som man skal tænke på, når man udvikler
Læs mereNavn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato: 14-05-2003
Side 1 af 8 Dato: 14-05-2003 Til Sigurd Som aftalt vil jeg her fremsende vores program til vores 80C535 kit og display. Det gik jo ud på at vi skulle starte med at få den til at intialiserer displayet,
Læs mereModerne numerische Methoden der Festkörperphysik Lanczos-ED für die AF Heisenberg-Kette
Moderne numerische Methoden der Festkörperphysik Lanczos-ED für die AF Heisenberg-Kette Programmcode gen matrix Lanczos Bedienung des Programms Konvergenz des Lanczos-Verfahrens Grundzustandsenergien der
Læs mereIT projekt person galleri
Denne guide er oprindeligt udgivet på Eksperten.dk IT projekt person galleri Denne artikel forsøger at forklare lidt om hvilke funktioner der ligger bag ved de forskellige titler som deltagerne i et IT
Læs mereListen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:
Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra
Læs mereI denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.
Denne guide er oprindeligt udgivet på Eksperten.dk Collections i.net Når du kigger i namespacet System.Collections finder du over 10 forskellige klasser. At vælge den rigtige til netop din applikations
Læs mere! "# $$ &'()*"* +*, & &"*0* & "# % %- %
!"! "# $$ & &'()*"* +*, &- & &"./+0 & &"*0* & & & 1 2 ()))))$$" "# - " # $!&!!" 34 3((5(4 6()))))5 3((5# 7())))) 4 3((58 43((58 3((5#9! 3((5#4 3((584 6 9 # '"!&()!" * " 49 9-3 :; & Private Sub Workbook_Open()
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4
DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens
Læs mereTree klassen fra sidste forelæsning
Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years
Læs mere//--------------------------------- Definition af porte og funktioner -------------------------
Temeraturmåler (C-program).txt // Initialiserings-sekvens #include #pragma model=medium #pragma code=0x0000 #pragma xdata=0x4000 #pragma asm=on #pragma parameters=register //#define display P4
Læs mereProgrammering i C Intro og grundlæggende C 5. marts 2007
Programmering i C Intro og grundlæggende C 5. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan for kurset Ma. 5/3: Ma. 19/3: Ma. 2/4: To. 12/4: Formål, intro, grundlæggende Videre, sprogkonstruktioner
Læs mereLøsning af skyline-problemet
Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle
Læs mereDANMARKS TEKNISKE UNIVERSITET
DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler
Læs mereDenne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS.
Denne guide er oprindeligt udgivet på Eksperten.dk XML i ASP Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS. Den forudsætter
Læs merePHP Pagination. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 01. May 2011 af dab93 I kategorien Programmering / Andre
Denne guide er oprindeligt udgivet på Eksperten.dk PHP Pagination I denne guide lærer du om at lave et pagination system med programmerings sproget PHP og MySQL database. Et pagination system er en "side-skiftende"
Læs mereRekursion og dynamisk programmering
Rekursion og dynamisk programmering Datastrukturer & Algoritmer, Dat C Forelæsning 12/10-2004 Henning Christiansen Rekursion: at en procedure kalder sig selv eller et antal metoder kalder hinanden gensidigt.
Læs mereForskellige Java versioner
Denne guide er oprindeligt udgivet på Eksperten.dk Forskellige Java versioner Denne artikel beskriver lidt om de forskellige Java versioner. Den forklarer J2SE/J2ME/J2EE, plugin/jre/sdk og Sun Java/Microsoft
Læs mereUgeseddel 4 1. marts - 8. marts
Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,
Læs mereI mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online.
Denne guide er oprindeligt udgivet på Eksperten.dk Hvem er online? Online script, som tager højde for at der kan være flere personer, som har den samme IP-adresse. Scriptet viser hvor lang tid brugeren
Læs mereGør Administrator-brugeren til almindelig bruger
Denne guide er oprindeligt udgivet på Eksperten.dk Gør Administrator-brugeren til almindelig bruger Guide til at fjerne den indbyggede administrator fra administratorgruppen. Det kræver et rimeligt godt
Læs mereEkstra hastighed med array's i Excel-VBA
Denne guide er oprindeligt udgivet på Eksperten.dk Ekstra hastighed med array's i Excel-VBA Brugen af arrays til indlæsning af og skrivning til celler i Excel kan give betragtelige hastighedsforøgelser
Læs mereInternt interrupt - Arduino
Programmering for begyndere Brug af Arduino Internt interrupt - Arduino - Afslutning EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Intern interrupt Jeg vil rydde lidt op. Her er nogle punkter vil har glemt
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2
Læs mere14.1 Internationale programmer
14.1 Internationale programmer Når et program skal anvendes af flere kulturer og sprog opstår behov for at programtekster, beløb og datoangivelser afhænger af landet og sproget, og man må i gang med at
Læs mere