Bildirim
C# Random.Range Komutu Hakkında
Daha Fazla 
Bu Konudaki Kullanıcılar:
Daha Az 

2 Misafir - 2 Masaüstü

Giriş
Mesaj
-
-
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.
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 >
-
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.
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
Sayfa:
1
Ip işlemleri
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X