Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual Basic .NET => Konuyu başlatan: muhittin_kaplan - 09 Aralık 2012, 02:10:58

Başlık: Random Fonksiyonu
Gönderen: muhittin_kaplan - 09 Aralık 2012, 02:10:58
bir iş için rastgele sayılara ihtiyacım oldu (yazdığım bir fonksiyonu testetmek için)
başlangıç ve bitiş değerlerini ben vererek RANDOM sınıfından türetilmiş bir nesneye sayı ürettiriyorum ve sonuçları Chart a aktarıyorum. sanki grafikler birbirini tekrar eden türden.
VB 6 da böyle bir durum vardı, hep aynı sayıları üretiyordu microsoft "bunu hallettik demişti" ama helledememişler gibi. yoksa ben mi yanılıyorum

(http://img803.imageshack.us/img803/2738/adsziu.png)
Başlık: Ynt: Random Fonksiyonu
Gönderen: muhittin_kaplan - 09 Aralık 2012, 02:20:12
Dim MyRnd As New Random             'sistemde olmayacak rastgele sayı üretmek için yazıldı
Deger(50) = MyRnd.Next(BaslangıçDegeri, BitişDegeri) 'sisyemde olmayacak rastgele sayı üretmek için yazıldı

bukadar hocam

mesaj birleştirme:: 09 Aralık 2012, 02:20:41

başlangıç ve bitiş zaten textlerden geliyor, global değişken
Başlık: Ynt: Random Fonksiyonu
Gönderen: OG - 09 Aralık 2012, 02:21:40
VB de,
Rnd komutundan önce, fonksiyonlarda kullanacağın değişkenlerden de önce "Randomize" eklemezsen aynı durum yaşanıyor. Orada çözüm "Randomize" de. Net için de böyle bir şey vardır.

    Randomize

    Dim i_mts, j_mts, tut_mts As Integer ' kullanıcamığımız değişkenleri tanımlıyoruz
    Dim varmi_mts As Boolean

    Dim d_mts(35) As Integer
   
    For i_mts = 0 To 35
        tut_mts = Int(Rnd() * 37)       ''' rastgele tut_mts ürettik
.
.
   next

gibi
Başlık: Ynt: Random Fonksiyonu
Gönderen: muhittin_kaplan - 09 Aralık 2012, 02:22:08
şimdi listbox u kontrol ettim sayılar aynı değil ama aynı sistemle gidiyor. belki grafiğe dökmesem anlamazdım.

mesaj birleştirme:: 09 Aralık 2012, 02:28:42

yok hocam RND fonksiyonunda doğrusunuz hatta zamana bağlıyordum ben (devamlı değişen bir durum gerekli). örneklerde, Bunda da zaman bağlıyorlar garip bir durum.
yani anlayacağınız istediğim iki sayı arasında rastgele sayı üretemeyeceğim gibi
örnek aşağıda
Dim r As New Random(System.DateTime.Now.Millisecond)
Başlık: Ynt: Random Fonksiyonu
Gönderen: fatih6761 - 09 Aralık 2012, 14:09:18
Gerçekte rastgele sayı üretmek imkansızdır. Belirli bir düzeyden daha istikrarsız rastgele sayı üretme algoritmalarına True Random Number Generator denir. .Net için en uygun TRNG yöntemi şöyledir:

Imports System.Security.Cryptography

' Nesnelerin tanımlandığı alan
Private Shared rngCsp As New RNGCryptoServiceProvider()

' Uygun yere gelecek
Dim randomBytes(3) As Byte
Dim randomNumber As Integer
rngCsp.GetBytes(randomBytes)
randomNumber = BitConverter.ToInt32(randomBytes)

C# dan VB ye çevirdim. Hata olabilir ama mantık aynı.
İyi çalışmalar...