Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions problem-set/TossesForHead.java
Original file line number Diff line number Diff line change
@@ -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;
}

}
13 changes: 13 additions & 0 deletions problem-set/TossesForHead.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# TossesForHead

პრობლემა:
```
თქვენი ამოცანაა გააკეთოთ მონეტის აგდების სიმულაციები და დათვალოთ საშუალოდ
რამდენჯერ უნდა ავაგდოთ მონეტა რათა ამოვიდეს ბორჯღალო
```

## პრობლემის გადაჭრის გზა
გავაკეთოთ მონეტის აგდების სიმულაციები და ყოველ ჯერზე დავთვალოთ, თუ რამდენი აგდებაა საჭირო, რათა ამოვიდეს ბორჯღალო. რადგან მონეტას მხოლოდ 2 მხარე აქვს, შეგვიძლია გამოვიყენოთ Random Generator-ის `nextBoolean()` მეთოდი, რომელიც თუ დააბრუნებს `true`-ს ნიშნავდეს, რომ ამოვიდა ბორჯღალო, წინააღმდეგ შემთხვევაში - საფასური. აგდებების რაოდენობების ჯამის სიმულაციების რაოდენობაზე გაყოფით კი მივიღებთ საშუალო რაოდენობას.

### შესაძლო შეცდომა
არ უნდა დაგვავიწყდეს საშუალოს დათვლისას მნიშვნელობის double-ში გადაკასტვა, წინააღმდეგ შემთხვევაში მივიღებთ დაბლა დამრგვალებულ მთელ რიცხვს.