FAQ |
Kalender |
|
![]() |
#1 | ||
|
|||
Har WN som tidsfördriv
|
Alltid kul med starta dagen med en tankeställare
![]() Kod:
class Program { static void Main(string[] args) { Random randomGenerator = new Random(); List<int> numbersList = new List<int>(); int generatedValue = 0; int maxValue = 300; bool passed = false; // main loop while (numbersList.Count != 20) { while (!passed) { generatedValue = randomGenerator.Next(0, maxValue); passed = !numbersList.Any(x => (x > (generatedValue - 10)) && (x < (generatedValue + 10))); } passed = false; // reset passed flag numbersList.Add(generatedValue); } // sort list in ascending order numbersList.Sort(); // print-out foreach (int value in numbersList) { Console.WriteLine(value.ToString()); } Console.ReadKey(); } } Senast redigerad av jayzee den 2016-08-31 klockan 09:36 |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Flitig postare
|
Citat:
- Givet - Vi slumpar en siffra mellan 0 och 99 (vi kallar maxvärdet x) - Distributionen är uniform, det är alltså lika stor chans att få 1 som 10 (givet att x >= 10). - Ett 'försök' nedan är ett anrop till 'randomGenerator.Next'. - Vi vill hitta y siffror, te.x 5 och 15. - Exempel: - Försök 1: 0 returnerades. Ok - 1 till 10 är nu inte längre giltiga nummer. - Försök 2 till 10: De ogiltiga siffrorna 2 till 10 returnerades. - Försök 11: 11 returnerades. Ok. - Alltså: - Vid försök 1 är sannolikheten att få 0: 1/100 (100 siffror totalt mellan 0 och 99) - Chansen att få 11 är nu (10 / 100 - 1), alltså 11% då siffrorna 2 till 10 betyder att vi måste välja på nytt. - Tredje gången: (20 / 100 - 2). - Sista gången: 10 * (y - 1) / (x - y - 1) Det är alltså större chans att få en senare vald siffra än en tidigare. Generellt sett skulle ja inte rekommendera den här metoden. |
||
![]() |
![]() |
Svara |
|
|