Avatar billede Slettet bruger
06. august 2012 - 21:49 Der er 4 kommentarer og
2 løsninger

Tilfældige tal?

Hej
Jeg har lige et spørgsmål, jeg benytter denne rutine:
Random rndNumbers = new Random();
        int rndNumber = 0;

        for (int nbr = 1; nbr < 12; nbr++)
        {
            rndNumber = rndNumbers.Next();
            Console.WriteLine("\nNumber: {0}", rndNumber);
            Console.ReadKey();
når jeg vil generere tilfældige tal, men jeg kan ikke finde ud af, hvorledes jeg gør, når jeg kun vil have tilfældige tal fra 0 til 100?
Lige en til, jeg bruger denne linie, når jeg udskriver noget på DOS skærmen:
Console.Write("\nTryk på en tilfældig tast: ");
Hvad skal jeg gøre, hvis jeg gern vil have alle bogstaver som store bogstave - ToUpper.
M.v.h.
Ole
Avatar billede Syska Mester
06. august 2012 - 21:55 #1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();

            Console.WriteLine("Tilfældige tal".ToUpper());
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("{0}", rnd.Next(0, 100));
            }
        }
    }
}
Avatar billede Slettet bruger
06. august 2012 - 22:19 #2
Hej buzzzz!

Mange tak for det hurige svar, og det er jo hvad jeg spurgte om,
jeg har afprøvet det, og det kører jo som i smør,  men - men - men.
Det er det med at stille spørgsmål, det er ikke så nemt enda, jeg glemte - naturligvis - at sige, at det samme tal, ikke måtte komme ud mere end een gang.
Håber du kan knække denne nød.
m.v.h.
Ole
Avatar billede Syska Mester
06. august 2012 - 22:47 #3
using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            var list = new HashSet<int>();
            Console.WriteLine("Tilfældige tal".ToUpper());
            var loops = 0;
            while(list.Count != 10 && loops < 100000)
            {
                list.Add(rnd.Next(0, 4));
                loops++;
            }

            foreach (var i in list)
            {
                Console.WriteLine("{0}", i);
            }
        }
    }
}


loops er på for at sikre mod at den kører for evigt. Hvis man nu som her siger man vil have mindst 10 tal som er forskellige for 0 til 4 ... og det kan jo ikke lade sig gøre.

Du kan også bare fjerne det hvis du er sikret mod dumme brugere.
Avatar billede Syska Mester
06. august 2012 - 22:47 #4
og svar hvis det skulle være nok.
Avatar billede arne_v Ekspert
07. august 2012 - 04:21 #5
Der er ihvertfald 3 forskellige maader at udtraekke N tal fra intervallet 1..M uden duplikater.

1) Hav en data struktur med udtrukne numre, generer tal 1..M indtil man faar et som ikke allerede er udtrukket

(#3 er en variant af denne)

2) Lav en liste med tallene 1..M, generer tal 0..liste.Count-1, udtraek dette element og fjern fra listen

3) Lav en liste med tallene 1..M, shuffle (ransom sort) af den liste og udtraek de foerste fra den liste

Hvilken der er mest hensigtsmaessig afhaenger lidt af N og M.

Metode 1 er tung hvis N=M og M er meget stor.

Metode 3 er tung hvis N er lille og M er meget stor.
Avatar billede Slettet bruger
07. august 2012 - 14:02 #6
Hej buzzzz
Det virker jo - selvfølgelig - perfekt, også de store bogstaver.
Mange tak.
Og til arne_v
Tak for dit svar, og du har sikkert også ret i det du skriver, men det jeg skal bruge det her til, det er kun til at fornøje mig selv.
m.v.h.
Ole
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester