Şimdi Ara

C# Random.Range Komutu Hakkında

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
5
Cevap
0
Favori
651
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • selam arkadaşlar

    float x = Random.Range(-50f, 50f);
    float y = Random.Range(-50f, 50f);

    x ve y olamk üzere 2 tane random sayı ürettikten sonra resimdeki gibi bir alanda bu sayılardan oluşmasını istemiyorum. Bunu nasıl yapabilirim?

    şimdiden teşekkürlerC# Random.Range Komutu Hakkında



    < Bu mesaj bu kişi tarafından değiştirildi ali_kocak -- 23 Haziran 2017; 4:9:34 >



  • Alandaki sayılar derken koordinat sistemi gibi düşünüp aşağıdaki gibi istiyorsunuz. Biraz açar mısınız? Hangi sayıları nasıl istiyorsunuz?
    (50,50), (49,50), (48,50), ...
    (50,49), (49,49), (48,49), ...
    .
    .
    .
    (50, 0), (49, 0), (48, 0), ...
  • Öncelikle koordinat sisteminde kullanmak için kesirli sayı üretmek yanlış bir tercih. Tam sayı olması gerekir. Gelelim soruna, bir yöntem:
    İçerdeki istemediğin alanı 16x16 genişliğinde bir kare farz edelim. Böylelikle orta dikey çizginin ve orta yatay çizginin iki tarafında 8'er birim kalmış olur.
    C# Random.Range Komutu Hakkında

    Resimde 4 farklı renkle işaretlediğim "dikdörtgen alanlar"dan herhangi birinde bir koordinat üretmek istiyorsun aslında. Örneğin mavi alanda bir koordinat üretmek istiyorsan sana gerekenler;
    Random rastgele = new Random();
    int x = rastgele.Next(-50, 50);//Burada bir sorun yok, mavi alan X ekseninde -50'den +50'ye olan kısmı kapsıyor.
    int y = rastgele.Next(50, 8);// Y ekseninde en yukarı nokta olan 50'den 8 birim kalana kadar aşağı gidebiliyoruz.

    Pembe için;
    Random rastgele = new Random();
    int x = rastgele.Next(-50, -8);//X ekseninde en soldaki nokta olan -50'den 8 birim kalana kadar sağa gidebiliyoruz.
    int y = rastgele.Next(8, -8);// Y ekseninde en yukarı nokta olan 8'den en aşağı nokta olan -8'e kadar aşağı gidebiliyoruz.

    Bunlardan yararlanarak diğer ikisini yazacak olursak yeşil için;
    Random rastgele = new Random();
    int x = rastgele.Next(-50, 50);//Burada bir sorun yok, yeşil alan X ekseninde -50'den +50'ye olan kısmı kapsıyor.
    int y = rastgele.Next(-8, -50);// Y ekseninde en yukarı nokta olan -8'den en aşağı nokta olan -50'ye kadar aşağı gidebiliyoruz.

    Sarı için;
    Random rastgele = new Random();
    int x = rastgele.Next(8, 50);//X ekseninde en soldaki nokta olan 8'den +50'ye kadar sağa gidebiliyoruz.
    int y = rastgele.Next(8, -8);// Y ekseninde en yukarı nokta olan 8'den en aşağı nokta olan -8'e kadar aşağı gidebiliyoruz.


    Peki renklerden birini seçersek nasıl yapacağımızı biliyoruz ama hangi renkten olacağını her defasında belirleyecek miyiz?
    X ve Y eksenlerinin alabileceği değerler için çok boyutlu birer dizi oluşturalım.
    int[,] xLer = { {-50, 50}, {-50, -8}, {-50, 50}, {8, 50} };
    int[,] yLer = { {50, 8}, {8, -8}, {-8, -50}, {8, -8} };

    Çok boyutlu diziler hakkında bilgin yoksa kısaca xler[0,1] sana xler'deki ilk bölüm olan {-50, 50}'den ikinci değer olan 50'yi verecektir. (Dizilerde saymaya 0'dan başladığımız için bir fazlası olarak düşün.) xler[3,0] sana xler'deki dördüncü bölüm olan {8, 50}'den ilk değer olan 8'i verecektir, gibi.

    Şimdi tek yapmamız gereken Bu iki dizinin 4 bölümünden hangisini kullanacağımızı belirlemek, onu da yine rastgele bir tam sayıyla yapacağız. Şöyle:
    Random rastgele = new Random();
    int kacinciBolum = rastgele.Next(0, 4);//Kaçıncı bölümü kullanacağımızı belirledik. Alabileceği değerlerin 0,1,2,3 olduğuna dikkat et, 4 dahil değil.
    //Örneğin kacinciBolum 1 oldu, xLer arasından ikinci bölümü kullanarak rastgele bir sayı üreteceğiz demektir.
    // int x = rastgele.Next(xLer[1, 0], xLer[1, 1]); bu aslında xLer'deki ikinci bölüm {-50, -8} olduğu için rastgele.Next(-50, -8); demek.
    int x = rastgele.Next(xLer[kacinciBolum, 0], xLer[kacinciBolum, 1]);
    int y = rastgele.Next(yLer[kacinciBolum, 0], yLer[kacinciBolum, 1]);


    Sonuç olarak hepsini birleştirirsek:
    int[,] xLer = { {-50, 50}, {-50, -8}, {-50, 50}, {8, 50} };
    int[,] yLer = { {50, 8}, {8, -8}, {-8, -50}, {8, -8} };
    Random rastgele = new Random();
    int kacinciBolum = rastgele.Next(0, 4);
    int x = rastgele.Next(xLer[kacinciBolum, 0], xLer[kacinciBolum, 1]);
    int y = rastgele.Next(yLer[kacinciBolum, 0], yLer[kacinciBolum, 1]);



    < Bu mesaj bu kişi tarafından değiştirildi yoktur -- 23 Haziran 2017; 14:30:46 >




  • hyrgul H kullanıcısına yanıt
    100x100 'lük bir alanda random sayılarla oluşturacağım bir koordinat belirlemek istiyorum. Fakat oluşturulan random sayıların, bu alanın tam ortasındaki 20x20'lik alanda oluşmamasını istiyorum.

    örneğin x=30, y=60 olabilir ama x=19 veya y=5 olamaz.


    ------------------


    özet olarak: "int x = Random.Range(-50,50);" diyerek -50 ile +50 arasında bir sayı oluşturmak istiyorum fakat oluşturduğum bu sayının -20 ile +20 arasında değer almasını istemiyorum. Alacağı değerler şunlar olmalı:
    -50,-49,-48,-47,-46,-45,-44,-43,-42,-41,-40-,39,-38,-37,-36,-35,-34,-33,-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21, (Bu aralıktakiler olmayacak) 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50
  • quote:

    Orijinalden alıntı: yoktur

    Öncelikle koordinat sisteminde kullanmak için kesirli sayı üretmek yanlış bir tercih. Tam sayı olması gerekir. Gelelim soruna, bir yöntem:
    İçerdeki istemediğin alanı 16x16 genişliğinde bir kare farz edelim. Böylelikle orta dikey çizginin ve orta yatay çizginin iki tarafında 8'er birim kalmış olur.
    C# Random.Range Komutu Hakkında

    Resimde 4 farklı renkle işaretlediğim "dikdörtgen alanlar"dan herhangi birinde bir koordinat üretmek istiyorsun aslında. Örneğin mavi alanda bir koordinat üretmek istiyorsan sana gerekenler;
    Random rastgele = new Random();
    int x = rastgele.Next(-50, 50);//Burada bir sorun yok, mavi alan X ekseninde -50'den +50'ye olan kısmı kapsıyor.
    int y = rastgele.Next(50, 8);// Y ekseninde en yukarı nokta olan 50'den 8 birim kalana kadar aşağı gidebiliyoruz.

    Pembe için;
    Random rastgele = new Random();
    int x = rastgele.Next(-50, -8);//X ekseninde en soldaki nokta olan -50'den 8 birim kalana kadar sağa gidebiliyoruz.
    int y = rastgele.Next(8, -8);// Y ekseninde en yukarı nokta olan 8'den en aşağı nokta olan -8'e kadar aşağı gidebiliyoruz.

    Bunlardan yararlanarak diğer ikisini yazacak olursak yeşil için;
    Random rastgele = new Random();
    int x = rastgele.Next(-50, 50);//Burada bir sorun yok, yeşil alan X ekseninde -50'den +50'ye olan kısmı kapsıyor.
    int y = rastgele.Next(-8, -50);// Y ekseninde en yukarı nokta olan -8'den en aşağı nokta olan -50'ye kadar aşağı gidebiliyoruz.

    Sarı için;
    Random rastgele = new Random();
    int x = rastgele.Next(8, 50);//X ekseninde en soldaki nokta olan 8'den +50'ye kadar sağa gidebiliyoruz.
    int y = rastgele.Next(8, -8);// Y ekseninde en yukarı nokta olan 8'den en aşağı nokta olan -8'e kadar aşağı gidebiliyoruz.


    Peki renklerden birini seçersek nasıl yapacağımızı biliyoruz ama hangi renkten olacağını her defasında belirleyecek miyiz?
    X ve Y eksenlerinin alabileceği değerler için çok boyutlu birer dizi oluşturalım.
    int[,] xLer = { {-50, 50}, {-50, -8}, {-50, 50}, {8, 50} };
    int[,] yLer = { {50, 8}, {8, -8}, {-8, -50}, {8, -8} };

    Çok boyutlu diziler hakkında bilgin yoksa kısaca xler[0,1] sana xler'deki ilk bölüm olan {-50, 50}'den ikinci değer olan 50'yi verecektir. (Dizilerde saymaya 0'dan başladığımız için bir fazlası olarak düşün.) xler[3,0] sana xler'deki dördüncü bölüm olan {8, 50}'den ilk değer olan 8'i verecektir, gibi.

    Şimdi tek yapmamız gereken Bu iki dizinin 4 bölümünden hangisini kullanacağımızı belirlemek, onu da yine rastgele bir tam sayıyla yapacağız. Şöyle:
    Random rastgele = new Random();
    int kacinciBolum = rastgele.Next(0, 4);//Kaçıncı bölümü kullanacağımızı belirledik. Alabileceği değerlerin 0,1,2,3 olduğuna dikkat et, 4 dahil değil.
    //Örneğin kacinciBolum 1 oldu, xLer arasından ikinci bölümü kullanarak rastgele bir sayı üreteceğiz demektir.
    // int x = rastgele.Next(xLer[1, 0], xLer[1, 1]); bu aslında xLer'deki ikinci bölüm {-50, -8} olduğu için rastgele.Next(-50, -8); demek.
    int x = rastgele.Next(xLer[kacinciBolum, 0], xLer[kacinciBolum, 1]);
    int y = rastgele.Next(yLer[kacinciBolum, 0], yLer[kacinciBolum, 1]);


    Sonuç olarak hepsini birleştirirsek:
    int[,] xLer = { {-50, 50}, {-50, -8}, {-50, 50}, {8, 50} };
    int[,] yLer = { {50, 8}, {8, -8}, {-8, -50}, {8, -8} };
    Random rastgele = new Random();
    int kacinciBolum = rastgele.Next(0, 4);
    int x = rastgele.Next(xLer[kacinciBolum, 0], xLer[kacinciBolum, 1]);
    int y = rastgele.Next(yLer[kacinciBolum, 0], yLer[kacinciBolum, 1]);



    az da olsa anladım hocam, saolun




  • Yapay Zeka’dan İlgili Konular
    C.S. v1.5 CFG ??
    17 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.