Permalänk
Medlem

C# hjälp!

Hejsan, jag och en vän sitter å klurar på hur vi ska lösa ett problem och kommer inte på något.
Det vi gör är en grej som slumpar ett nummer från 1-20, det har med frågor att göra, så vi vill inte att samma fråga ska komma två gånger, så frågan är alltså;
Hur ska vi göra så att inte samma nummer kommer upp 2 gånger? Ursäkta om jag har förklarat lite otydligt, fråga om ni undrar något så får jag väll försöka förklara det
Hjälp skulle vara väldigt uppskattat!

Permalänk
Medlem

Spara alla tal ni slumpar fram i en lista och om nåt tal kommer upp som redan finns i listan, ja då vet ni att det redan varit upp en gång

Visa signatur

"Say unto thine own heart, I am mine own redeemer"
Don't touch me when I'm crazy of that airplane glue

Permalänk
Medlem

Eller borde det väl gå att slumpa tal utifrån en lista. När talet slumpats fram tas talet bort från listan.

Permalänk
Medlem

using System; using System.Collections.Generic; using System.Linq; namespace SlumpadeFragor { class Program { static void Main(string[] args) { string[] questions = { "Fråga 1", "Fråga 2", "Fråga 3", "Fråga 4", "Fråga 5", "Fråga 6", "Fråga 7", "Fråga 8", "Fråga 9", "Fråga 10", "Fråga 11", "Fråga 12", "Fråga 13", "Fråga 14", "Fråga 15", "Fråga 16", "Fråga 17", "Fråga 18", "Fråga 19", "Fråga 20" }; var numbers = new List<int>(); for(int i = 0; i < 20; i++) numbers.Add(i); var slumpade = numbers.OrderBy(a => Guid.NewGuid()); foreach (var i in slumpade) { Console.WriteLine(questions[i]); } } } }

Visa signatur
Permalänk
Medlem
Skrivet av acer94:

Hejsan, jag och en vän sitter å klurar på hur vi ska lösa ett problem och kommer inte på något.
Det vi gör är en grej som slumpar ett nummer från 1-20, det har med frågor att göra, så vi vill inte att samma fråga ska komma två gånger, så frågan är alltså;
Hur ska vi göra så att inte samma nummer kommer upp 2 gånger? Ursäkta om jag har förklarat lite otydligt, fråga om ni undrar något så får jag väll försöka förklara det
Hjälp skulle vara väldigt uppskattat!

public IEnumerable<int> RandomizedRange(int start, int end) { var rnd = new Random(); return Enumerable.Range(start, end).OrderBy(n => rnd.Next()); }

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Tack för hjälpen alla!

Permalänk
Medlem

En alternativ lösning är att ni ser på era frågor som en kortlek med frågekort.
Problemet reduceras till att blanda kortleken och sedan dra de k första korten.
Se t.ex. http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle

Visa signatur

weeeee