🔮Şans Oyunu

❓ Soru

Şans oyunundaki sayılar iki farklı kutudan rastgele seçilmektedir. 49 adet beyaz top bulunan kutudan 5 farklı top, 42 adet kırmızı top bulunan kutudan bir top seçilmektedir. Math.random() komutunu kullanarak rastgele seçimle şans toplarını belirleyin.

Not: İlk kutudaki sayılar tekrar edemez, 5 beyaz top 1-49 arasında farklı değerlere sahip olacaktır. Kırmızı top ise 30-72 arasında bir değer alacaktır.

⛓ Program Kısımları

  1. Farklı rastgele sayılar üretmek.

  2. Sayıları ekrana yazdırmak.

👓 Çözüm Yöntemi

  • İki sayı arasında rastgele tam sayı üretmek için aşağıdaki komut kullanılır:

    rastgele = (int)(Math.random()*(Max-Min=1)+Min); (Max ve Min değerleri dahil)
  • Üretilen sayıların tekrarlanmasını engellemek için:

    1. N+1’lik boolean tipinden A dizisi oluşturulur.

    2. Sayı üretildikten sonra A[sayı] == false sayı ilk defa üretiliyor anlamına gelir. Bu sayının kullanıldığını belirtmek için A[sayı] = true yapılır. A[sayı] == false değilse sayı önceden üretilmiş anlamına gelir o yüzden tekrar rastgele komutu verilir.

👩‍🔧 Çözüm Adımları

  1. Değişkenlerin tanımlanması.

  2. 5 kere dönen döngünün oluşturulması

    • b=0

    • b=0 olduğu sürece:

    • beyaz üretilip yazdırılır.

  3. kirmizinın üretilip yazdırılması.

🤖 Kod

⚙ C++ Kodu

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
    // Değişkenlerin tanımlanması
    bool beyaz_top[50];
    int beyaz, kirmizi, i, b;
    cout << "Beyaz Toplar: ";
    srand(time(NULL));
    // 5 kere dönen döngünün oluşturulması
    for (i = 0; i < 5; i++) {
        b = 0;
        while (b == 0) {
            // `beyaz` üretilip yazdırılır
            beyaz = rand() % (49) + 1;
            if (beyaz_top[beyaz] == false) {
                cout << beyaz << "\t";
                b = 1;
                beyaz_top[beyaz] = true;
            }
        }
    }
    // `kirmizi`nın üretilip yazdırılması
    kirmizi = rand() % (43) + 30;
    cout << "\nKirmizi Top: " << kirmizi;
    return 0;
}

🐍 Python Kodu

import random
beyaz_top = [False] * 50
print("Beyaz Toplar: ")
for i in range(0, 5):
    b = 0
    while b == 0: 
        beyaz = random.randint(1, 50)
        if beyaz_top[beyaz] == False:
            print(beyaz)
            b = 1
            beyaz_top[beyaz] = True;

kirmizi = random.randint(30, 73)
print("Kirmizi Top: ", kirmizi)

☕ Java Kodu

public class SansOyunu {
 public static void main(String arg[]) {
  boolean beyaz_top[] = new boolean[50];
  int beyaz, kirmizi, i, b;
  System.out.print("Beyaz Toplar: ");
  for (i = 0; i < 5; i++) {
   b = 0;
   while (b == 0) {
    beyaz = (int)(Math.random() * 48 + 1);
    if (beyaz_top[beyaz] == false) {
     System.out.print(beyaz + "\t");
     b = 1;
     beyaz_top[beyaz] = true;
    }
   }
  }
  kirmizi = (int)(Math.random() * 42 + 30);
  System.out.print("\nKirmizi Top: " + kirmizi);
 }
}

🎉 Ekran Çıktısı

Beyaz Toplar: 37 19 16 3 20
Kirmizi Top: 54

💡 Notlar

  1. Hafızada fazla yer kaplamamak için kontrol dizisini boolean tipinden tanımladık.

Last updated