06. august 2012 - 21:49Der 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
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)); } } } }
Synes godt om
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
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.
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.
Synes godt om
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
Synes godt om
Ny brugerNybegynder
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.