Loading...
stefanivanov95 avatar stefanivanov95 5 Точки

Въпрос относно "принтиране" на произволно число!

Днес един приятел на интервю за работа му казали да накоди код който да вади призволни числа  от 1 до 10 ...

Всеки път щом интервюиращи изпише дробно число ...

Искам да попитам някой може ли да ми напише вариант на код със " С# "  който да принтира всеки път различни числа но без някакви зависимусти от сорта на        (if (number = "0.5") Console.ReadLine("8") )     просто призволно ?

Няма да ходя на интервю ... Звучи лесно, реших да пробвам и ГРЕДА ? :D В бейсик съм но ми е интересно ??

Тагове:
2
Общи приказки
dvdty avatar dvdty 497 Точки
var num = Console.ReadLine();
Random random = new Random();
var test = 0.0;

if(double.TryParse(num, out test)) {
    Console.WriteLine(random.Next(0, 10));
}

Нещо такова?

0
irena01 avatar irena01 17 Точки

При такива въпроси се подразбира, че нямаш право да ползваш готовите библиотеки за генериране на произволни числа на съответните езици - като Random класа в C#. Понеже истински произволни числа (true random) не могат да бъдат генерирани от компютъра (според някои и от вселената), от теб се очаква да съчиниш алгоритъм, който само на пръв поглед генерира произволно число базирано на друг случаен вход (в случая числото, което интервюиращият въвежда), към което има изискване да се пада с еднаква вероятност между 1 и 10. Когато интервюиращият тества програмата ти, той не трябва да може да забележи някакъв pattern в генерирането на изхода ти (например да вадиш винаги първата цифра след десетичната запетая - 5.5022 -> 5, 30.873 -> 8). Трябва да превърнеш случайното дробно число в случайно цяло число от 1 до 10, без да си личи как е получено на пръв поглед. Има много възможни подходи, например да сумираш всички цифри преди и след десетичната запетая (103.17 -> (1 + 0 + 3) + (1 + 7) = 12), след което да разделиш модулно на 10 (12 % 10 = 2) и така от 103.17 се получава 2, което изглежда доста случайно, поне на пръв поглед. Ето още няколко теста:

7.04  ->  1
189.1  ->  9
1998.0114  ->  3
5.5  ->  10 (частен случай, ако остатъкът си остане 0 връщаш 10)

Машините в казината генерират случайни числа по същия принцип, но разбира се с много по-сложни алгоритми, за да се гарантира възможно най-автентична псевдо-случайност, което само по себе си звучи като парадокс. laugh

5
02/12/2017 23:30:50
stefanivanov95 avatar stefanivanov95 5 Точки

Много благодаря ! 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.