diff --git a/problem-set/TossesForHead.java b/problem-set/TossesForHead.java new file mode 100644 index 0000000..bb099c4 --- /dev/null +++ b/problem-set/TossesForHead.java @@ -0,0 +1,43 @@ +/* + * File: TossesForHead.java + * ---------------------------- + * თქვენი ამოცანაა გააკეთოთ მონეტის აგდების სიმულაციები და დათვალოთ საშუალოდ + * რამდენჯერ უნდა ავაგდოთ მონეტა რათა ამოვიდეს ბორჯღალო + */ + +import stanford.karel.*; + +public class TossesForHead extends ConsoleProgram{ + + private static final int SIMULATION_NUM = 1000000; + + public void run() { + //create Random Generator. + RandomGenerator rgen = RandomGenerator.getInstance(); + //Variable to sum up all flip numbers to get head. + int flipNum = 0; + //Simulating coin flips. + for(int i = 0; i < SIMULATION_NUM; i++) + flipNum += simulateFlips(rgen); + //Get average number. + double averageFlipNum = (double) flipNum / SIMULATION_NUM; + //Print message. + println("Average coin flip number to get head is " + averageFlipNum + "."); + } + + private int simulateFlips(RandomGenerator rgen) { + //From start counter is 0. + int flipNumToGetHead = 0; + while(true) { + //If Random Generator returns true, means we flipped head. + boolean coin = rgen.nextBoolean(); + //Increase counter. + flipNumToGetHead++; + //If coin flipped on head, while should break. + if(coin) + break; + } + return flipNumToGetHead; + } + +} diff --git a/problem-set/TossesForHead.md b/problem-set/TossesForHead.md new file mode 100644 index 0000000..671cad5 --- /dev/null +++ b/problem-set/TossesForHead.md @@ -0,0 +1,13 @@ +# TossesForHead + +პრობლემა: +``` +თქვენი ამოცანაა გააკეთოთ მონეტის აგდების სიმულაციები და დათვალოთ საშუალოდ +რამდენჯერ უნდა ავაგდოთ მონეტა რათა ამოვიდეს ბორჯღალო +``` + +## პრობლემის გადაჭრის გზა +გავაკეთოთ მონეტის აგდების სიმულაციები და ყოველ ჯერზე დავთვალოთ, თუ რამდენი აგდებაა საჭირო, რათა ამოვიდეს ბორჯღალო. რადგან მონეტას მხოლოდ 2 მხარე აქვს, შეგვიძლია გამოვიყენოთ Random Generator-ის `nextBoolean()` მეთოდი, რომელიც თუ დააბრუნებს `true`-ს ნიშნავდეს, რომ ამოვიდა ბორჯღალო, წინააღმდეგ შემთხვევაში - საფასური. აგდებების რაოდენობების ჯამის სიმულაციების რაოდენობაზე გაყოფით კი მივიღებთ საშუალო რაოდენობას. + +### შესაძლო შეცდომა +არ უნდა დაგვავიწყდეს საშუალოს დათვლისას მნიშვნელობის double-ში გადაკასტვა, წინააღმდეგ შემთხვევაში მივიღებთ დაბლა დამრგვალებულ მთელ რიცხვს.