Ş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.
Farklı rastgele sayılar üretmek.
Sayıları ekrana yazdırmak.
İ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:
N+1
’lik boolean tipinden A
dizisi oluşturulur.
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.
Değişkenlerin tanımlanması.
5 kere dönen döngünün oluşturulması
b=0
b=0
olduğu sürece:
beyaz
üretilip yazdırılır.
kirmizi
nın üretilip yazdırılması.
#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ırbeyaz = 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;}
import randombeyaz_top = [False] * 50print("Beyaz Toplar: ")for i in range(0, 5):b = 0while b == 0:beyaz = random.randint(1, 50)if beyaz_top[beyaz] == False:print(beyaz)b = 1beyaz_top[beyaz] = True;kirmizi = random.randint(30, 73)print("Kirmizi Top: ", kirmizi)
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);}}
Beyaz Toplar: 37 19 16 3 20Kirmizi Top: 54
Hafızada fazla yer kaplamamak için kontrol dizisini boolean tipinden tanımladık.