Ana Menü
· Ana Sayfa
· Dosyalar
· Dökümanlar
· Forum
· Günün Resmi
· Haber Arşivi
· WWW Linkleri
· Üye Listesi

     Forumlar

 strncpy ve strncpy_s
 Konu adi : Borland c++ Builder ile Amiral Batti
 Rady10 - YerliOyun
 Kabusta Kaybolmak
 Konsol da programı bekletmek
 Oyun programlama icin hangi programlama dilli ?
 flash! şanlıurfa bilgisayar oyununda(no rapid)
 Sevgilim Olur musun?
 Directx'e başlamak isteyenler bi bakın
 PSP programlama
 Flash tan php
 Bilgisyr oyunu yapmam için üniverstde hangi bölüme girmeliym
 www.arshiv.gen.ms
 Cimg.h ilgilenenler icin
 müttefik oyunu

Konu Disi
 Emraah
 Yeni sitemiz açıldı
 Kalp krizi durumunda ne yapılmalı?
 Oyun sektöründe hangi görevde çalışmak isterdiniz?
 Takım arkadaşı sorunu
 msn de renklı nıck
 pc hata veriyor ! YARDIM!!
 Gülmek isteyenler Buraya
 İnanılmaz hl 2 modu görüntüsü
 Computer Languages History

[ Forumlara Git ]


oyunyapimi.org: Forums

www.oyunyapimi.org :: Başlığı Görüntüle - Rasgele sayı sorunu
 SSSSSS   AramaArama   Kullanıcı GruplarıKullanıcı Grupları   ProfilProfil   LoginLogin 

Rasgele sayı sorunu

 
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> Programlama Dilleri ve Algoritmalar
Önceki başlık :: Sonraki başlık  
Yazar Mesaj
DarkScythe



Kayıt: Aug 04, 2005
Mesajlar: 173
Nereden: Vault 35

MesajTarih: Fri Sep 09, 2005 1:50 pm    Mesaj konusu: Rasgele sayı sorunu Alıntıyla Cevap Ver

tüm dillerde böyle bir sorun var mı bilmiyorum , benim c# da karşıma çıktı , sürekli random sayı istiyorum ve ekrana yazdırıyorum mesela ve sonuç şöyle: 2222555588883333000055556666 fln gibi yani arka arkaya 2 tane random sayı isteyince aynı sayıyı veriyor sebebinide netten araştırdım , siz rasgele bir sayı isteyince sistem saaatinin o anki milisecond değeri yani mesela saat 14:30:12,348 ise size 8 sayısını veriyo , yeni sistemlerde çok hızlı olduğu için saniyenin binde birinde 3-5 kere işlem yapınca aynı sayıyı tekrar veriyo , buna bir çözüm önerisi getirebilecek var mı yani arka arkaya 2 sayı istediğimde aynı sayılar değil yine rasgele bi sayı gelecek Question
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder
levent



Kayıt: Mar 13, 2003
Mesajlar: 188
Nereden: İstanbul

MesajTarih: Fri Sep 09, 2005 2:06 pm    Mesaj konusu: Alıntıyla Cevap Ver

random sayının peş peşe aynı çıkması sanırım genel bir durum ve çözümü bildiğim kadarıyla "randomize" türü fonksiyonlardan geçiyor (vb ve delphide böyleydi.)
c#'ta ise VBMath kütüphanesi yardımıyla Randomize'ı kullanabilirsin sanırım.
ama güzelim c# kodan vb bulaştırmaya değer mi bilmiyorum.
belki başka bir yol bilen vardır.
Kod:

double r;
Random randObj;
//mesela buraya olabilir
VBMath.Randomize(); //parametere olarak seed girilebilir.
r=randObj.Next( );


*:aslında aklıma geldi de c#'taki random classı tamamen rasgele sayı üretecek fonksiyonlara da sahip olabilir.
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
HakanNehir



Kayıt: Mar 22, 2004
Mesajlar: 60

MesajTarih: Fri Sep 09, 2005 2:59 pm    Mesaj konusu: Alıntıyla Cevap Ver

iki öneri:

öneri 1:

int öncekisayi; //global değişken

void RastgeleSayi(){
int rastgelesayi;
Loop
rastgelesayi = random()*10; //0-9 arası
While rastgelesayi == öncekisayi;
öncekisayi = rastgelesayi;
}



öneri 2

void RastgeleSayi()
{
int ratgelesayi, i;

for (i=0; i<5; i++)
{
rastgelesayi += random()*10; //0-9 arası
}

rastgelesayi /= 5;

}
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
DarkScythe



Kayıt: Aug 04, 2005
Mesajlar: 173
Nereden: Vault 35

MesajTarih: Fri Sep 09, 2005 3:21 pm    Mesaj konusu: Alıntıyla Cevap Ver

cevaplar için saolun hakan arkadaşım 1. yöntemini bende denemiştim başka benzer yöntemleride denedim sonuç alınıyo ama performans sorunları yaratıyo , pek stabil olmuyo anlıcan , c++ bilen arkadaşlar VB deki randomize tarzı bi olay c++ dada var mı acaba yoksa c++ da çözümü nedir , nie c# ta böyle bir eksiklik var anlamadım şimdi
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder
Ziyaretci



Kayıt: Apr 24, 2003
Mesajlar: 287
Nereden: İstanbul

MesajTarih: Fri Sep 09, 2005 3:47 pm    Mesaj konusu: Alıntıyla Cevap Ver

normalde rasgele sayı classları SADECE ilk defasında Sistem timer ina ulaşır. Daha sonraki sayılar, pseudo-random sayıların tipik özelliği olarak bir önceki sayıya bağlı üretilir.

Eğer sürekli timer a ulaşıyorsan bir hata yapıyorsun demektir...

kodunu tekrar incele derim..
Başa dön
Kullanıcı profilini gör
ayberk_cerit



Kayıt: Aug 13, 2004
Mesajlar: 51
Nereden: Avdan'dan geliyor elinde desdi,kız kurban olduğum sana kim küstü ...

MesajTarih: Fri Sep 09, 2005 3:51 pm    Mesaj konusu: Alıntıyla Cevap Ver

.NET Framework System.Security.Cryptography.RandomNumberGenerator sınıfına bi bak istersen...
Başa dön
Kullanıcı profilini gör
ferdemoncel



Kayıt: Nov 03, 2003
Mesajlar: 277
Nereden: Eskişehir

MesajTarih: Fri Sep 09, 2005 4:02 pm    Mesaj konusu: Alıntıyla Cevap Ver

Evet tabi ki var. Bu konu uzun uzun CDili grubunda tartışılmıştı.
Ben de aslında basit gibi görünen bu konunun aslında o kadar da basit olmadığını öğrenmiştim.

Biraz uzun bir thread olsa da adresi:

http://groups.yahoo.com/group/cdili/message/3918

Bunun için ya time işlevini ya da Windows'un GetTickCount işlevini kullanabilirsiniz. Sanırım şunun gibi bir şeyler olabilir:

Kod:


#include <iostream>
#include <windows.h>
#include <ctime>
using namespace std;

int rastgeleSayi(int n)
{
const unsigned aralik_genisligi = ((unsigned)(RAND_MAX)+1) / n;
int r;

do r = rand() / aralik_genisligi;
while (r >= n);

return r;
}

int main ()
{
// srand (time (NULL));
srand (GetTickCount ());
int sayi = rastgeleSayi (10);
cout << sayi;
return 0;
}
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
ebleda



Kayıt: Dec 30, 2004
Mesajlar: 183
Nereden: usa

MesajTarih: Fri Sep 09, 2005 4:09 pm    Mesaj konusu: Alıntıyla Cevap Ver

Random number uretmek icin her seferinde sistem saati cagirilmaz! ilk tohumu atmak icin sistem saati kullanilir. Tohum atildiktan sonra Ziyaretci'nin dedigi gibi diger random sayilar bu tohumdan turer. Tabi ki buradaki en buyuk sorun ise random number genertor'un kalitesidir.
Bu da yapacagin uygulamaya bagli.

Bu testi yapmanin en iyi yolu ise sayilar arasindaki korolasyona bakmatir.
r(i)'ler uretilen random sayilar olmak uzere,
c(j)=sum[r(i) r(i+j), {i,N}]/N - 1/4 toplaminda,
j = 0,1,2... (tabiki burada N 'i oldukca buyuk tutmak sartiyla), eger herhangi bir periodicity olusursa c(j) sifirdan farkli bir sayi uretecektir.

Benim icin j'nin 100'e kadar cikmasini saglayan bir random number gerenator yeterli geliyor cunku onun otesinde nonlinear fiziksel sistemlerde random numberdan once fiziksel cevapta sapmalar oluyor.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
DarkScythe



Kayıt: Aug 04, 2005
Mesajlar: 173
Nereden: Vault 35

MesajTarih: Fri Sep 09, 2005 4:31 pm    Mesaj konusu: Alıntıyla Cevap Ver

her seferinde time a bakılmadığıı çaktım ama nie böle oluyor

kod şöle mesela :

public static int rnd(int a,int b)
{
Random x = new Random();
int c = x.Next( a, b) ;
return c;
}
private void form_Load(object sender, System.EventArgs e)
{
for (int i=0;i<100;i++)
{
textbox.text += rnd ( 0,9 ).Tostring;
}
}

ekranda çıkan bu :
3333333333000000000006666666666668888888888.... fln
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder
lucifer



Kayıt: Nov 02, 2002
Mesajlar: 215
Nereden: Istanbool

MesajTarih: Fri Sep 09, 2005 4:41 pm    Mesaj konusu: Alıntıyla Cevap Ver

abi... su random x = new random() satirini bi kere yapsana... her rnd dediginde cagirma onu. bence olay ordan kaynaklaniyo.
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
DarkScythe



Kayıt: Aug 04, 2005
Mesajlar: 173
Nereden: Vault 35

MesajTarih: Fri Sep 09, 2005 4:46 pm    Mesaj konusu: Alıntıyla Cevap Ver

lucifer hll olsun kardeşim çözdün olayı
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder
Mesajları göster:   
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> Programlama Dilleri ve Algoritmalar Tüm saatler GMT +2 Saat
1. sayfa (Toplam 1 sayfa)

 
Forum Seçin:  
Bu forumda yeni konular açamazsınız
Bu forumdaki mesajlara cevap veremezsiniz
Bu forumdaki mesajlarınızı değiştiremezsiniz
Bu forumdaki mesajlarınızı silemezsiniz
Bu forumdaki anketlerde oy kullanamazsınız


Powered by phpBB 2.x.x © 200x phpBB Group
Türkçe Çeviri : Onur Turgay & Erdem Çorapçıoğlu
Türkçe Düzenleme: Alexis Canver
Version 2.x.x of PHP-Nuke Port by Tom Nitzschner © 200x www.toms-home.com




Web site powered by PHP-Nuke
Web site engine\'s code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Sayfa Üretimi: 0.215 Saniye