5 svar
123 visningar
Safi67 3 – Fd. Medlem
Postad: 1 dec 2021 03:50 Redigerad: 1 dec 2021 06:11

Programmera din egen Slumptalsgenerator

Hej, jag ska programmera min egna slumptalsgenerator och med hjälp av den så ska man lösa ut uppgift 33 på sida 252 i boken(matte 5000 5). Jag har skrivit upp en kod som slumpmässigt ger mig olika siffror men jag vet inte hur jag ska göra på uppgift 33 och hur det har ett samband med slumptalsgeneratorn alls... jag är helt ute och cyklar och behöver hjälp, tack!

Programmeraren 3390
Postad: 1 dec 2021 09:18 Redigerad: 1 dec 2021 09:50

Är det korrekt att din kod är baserad på beskrivningen i 33 a? Det är mer eller mindre en förutsättning för de övriga delfrågorna.
Är det delfrågorna i a du fastnat på? De är ren matematik och kan besvaras utan programmet eftersom enkla beräkningar.
Om du gjort ett program, se till att enkelt kan prova med olika konstanter.
Du kan också "koda" generatorn i ett kalkylark om det känns enklare. Så här:

Slumptalsgeneratorn:

xn+1=Axn+B (mod C)

x0 är ett valt frö.

För uppgift c och d behöver du dock programmera. I "c" står det troligen fel, man ska skifta 8 steg (eller dividera med 256) eftersom "bit 8 till 15" alltid betyder från 8:e bit:en och bitar är alltid noll-numrerade (man ska alltså skifta bort bit 0 till 7).

Safi67 3 – Fd. Medlem
Postad: 1 dec 2021 17:00
Programmeraren skrev:

Är det korrekt att din kod är baserad på beskrivningen i 33 a? Det är mer eller mindre en förutsättning för de övriga delfrågorna.
Är det delfrågorna i a du fastnat på? De är ren matematik och kan besvaras utan programmet eftersom enkla beräkningar.
Om du gjort ett program, se till att enkelt kan prova med olika konstanter.
Du kan också "koda" generatorn i ett kalkylark om det känns enklare. Så här:

Slumptalsgeneratorn:

xn+1=Axn+B (mod C)

x0 är ett valt frö.

För uppgift c och d behöver du dock programmera. I "c" står det troligen fel, man ska skifta 8 steg (eller dividera med 256) eftersom "bit 8 till 15" alltid betyder från 8:e bit:en och bitar är alltid noll-numrerade (man ska alltså skifta bort bit 0 till 7).

Jag har försökt programmera med kommer ingenstans..

Programmeraren 3390
Postad: 1 dec 2021 17:05

Kan du Java? Eller nåt annat språk?

Safi67 3 – Fd. Medlem
Postad: 1 dec 2021 17:08
Programmeraren skrev:

Kan du Java? Eller nåt annat språk?

Har en läxa på det här och det måste skrivas med Python

Programmeraren 3390
Postad: 1 dec 2021 17:23 Redigerad: 1 dec 2021 17:24

Har du gjort uppgifterna a och b? De kräver ingen programmering

Jag kan inte python. Men i Java kan det se ut ungefär så här om x(n+1)=ax(n)+b (mod c).
Man har variabler för a, b, c.

    public static void main(String[] args) {
        int a = 25173;
        int b = 13849;
        int c = 65536;
        int x = 7;                         // x0
        int n = 1000 * 1000;
        for (int i = 0;  i < n;  i++) {
            x = (a*x+b) % c;
            int bits = (x & 0xff00) >> 8;
        }
    }

bits är ett tal mellan 0 och 255 och det är de talen man sen ska kontrollera fördelningen på (nu gör programmet ingenting annat än ta fram 1 miljon slumptal som det inte görs något med).

Svara
Close