[C#] Using Classes and Objects - 2 задача


6

 

[ Classes And Objects Задача 2 ]

Write a program that generates and prints to the console 10 random values in the range [100, 200].
 
 
- използваме класа Random и съответно метода .Next()
.Next(); - връща random положително число
.Next(5); - връща число от >=0 и <5 // 0 1 2 3 4 
.Next(1,11); -връща число >=1 и <11 //1, 2, 3...10



Отговори



0
Моето решение също се основава на теорията от глава № 11 , но в поредицата от случайно генерирани числа , три от тях са по-малки от 100. Ето линк към решението ми : http://pastebin.com/yw7xWSct

от Валентин Георгиев (0 точки)


0
Колеги , сега , като погледнах резултата на конзолата виждам ,че от десет числа , четири са по-малки от 100.Имам генерирани 173 , 157 , 102 , 42 , 131 , 40 , 174 , 51 , 180 , 71

от Валентин Георгиев (0 точки)

0
За да ти работи спрямо условието, трябва да напишеш rand.Next(100,201) В твоя случай генерира от 1 до 200

от Mitko_Mitev (1276 точки)



1

http://pastebin.com/kU8wzQ15

До колкото разбирам от инфото в MSDN "случайността" на класа Random не е никаква случайност (ако изобщо може да съществува нещо, което е абсолютна случайност), като ако конструктурът остане Random() (тоест без ... аз ще го нарека "сито", а не "семе" защото ме кефи като отсееш нещо и да се случи нещо уж случайно) той е дефолтно зависим от времето на изпълнение. Тоест ако пускаш приложението всеки ден в 12:00 силно вероятно е случайните ти числа да са едни и същи. За да се избегне подобен сценарии може да му сложиш въпросният seed или по мое му "сито" (което трябва да е кастнато към int) по такъв начин, че винаги когато изпълнява клас Random() ситото да е различно, в моят случай съм му треснал тиковете от DateTime.

Пример със seed към тиковете...

Пример със seed към int @int = 13
 




0
Аз в цилъл for, които се изпълнява десет пъти, директо извиквам класа Random и извеждам случайната стойност между 100 и 200 дадена ми от него: http://pastebin.com/a8Dn15Wh

от Plamen.Minkov (216 точки)


0
http://pastebin.com/qrh9k9E4 , от коментарите става ясно

от aleahim (0 точки)


1

Задачата е решена на база на класа Random.  Първо се генерира едно число тип double, след това числото отново се умножава по рандом числа минимум и максимум и накрая го умножавам допълнително по рандом число, на което се прилагат побитови операции преди умножението. Проверявам чрез checked да не се препълни типа int.

Накрая полученото число го деля по модул 100 и прибавям 100 за да е в дадения интервал.

решение: Pastebin

Щеше ми се да направя генерацията без готовия клас, но алгоритмите ми се видяха доста сложни. Ако на някой са му интересни , ето тези които успях да намеря.

  1. Additive Lagged Fibonacci
  2. Mersenne Twister
  3. Poisson distribution
  4. Xorshift

от stanev.plamen (1143 точки)


0

Мето решение. 

Обяснение:
Използвам класа Random, като създавам обект, и метода Next(), като задавам интервала на числата.

Останалите задачи от темата може да видите ТУК!


от cchapo (583 точки)


0

GitHub

Горната граница трябва да е 201 , защото тя не се включва в възможните генерирани числа. ( за разлика от долната)


от dzhenko (3893 точки)


0
Ето нещо и от мен. Направих метод който работи с произволни стойности включително и зададените, нещо от сорта [ value1, value2] , като и двете value са възможни като варианти:
private static void RandomValuesIncluding(int start, int end) { Random random = new Random(); int value;
for (int i = 0; i < 10; i++) { value = random.Next(end - start +1) + start; Console.WriteLine(value); } }

от bstaykov (528 точки)


0
Сравнително лесна задача :
http://pastebin.com/NUr5yDKy

от DinkoK (159 точки)


0

В моето решение, генерирам числа от 0 до 100 и след това добавям 100.


от gradev (1661 точки)