Random Fonksiyonu

Başlatan muhittin_kaplan, 09 Aralık 2012, 02:10:58

muhittin_kaplan

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


muhittin_kaplan

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

OG

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
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

muhittin_kaplan

#3
ş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)

fatih6761

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...