rasgele veri oluşturmak[Çözüldü]

Başlatan baran123, 16 Mart 2014, 02:34:19

baran123

Merhaba
Ben random olarak bir sayı oluşturmak istiyorum örneğin 5 adet led var bu ledleri rasgele yaksın istiyorum bunu nasıl yapabilirim random sınıfı varmı c#daki gibi ?

İyi çalışmalar.

xoom

int rastgelesayi=rand() % 100 // 0-99 arasında rastgele sayi verir.

baran123

bu kodu yazdıgım zaman hata veriyor ?

skara1214

kütüphanesi vardır include etmen gereken internetten araştır #include<stdio.h> gibi
Herkes ölür ama herkes gerçekten yaşamaz

baran123

teşekkürler arkadaşlar kütüphane gerekliymiş şu kütüphaneyi kullanarak yapabiliriz
#include <stdlib.h>
örnek : int rasgele = rand()%20;    1-20 arasında rasgele sayı üretir.

Teşekkürler iyi çalışmalar

ground

Random sayı üretimi gerçekten çok ilginç bir konu..

Ya da şöyle diyeyim gerçek bir random sayı üretmek çok zor ve önemli..

Bunun için analog dünyadan bazı bilgiler alınması gerektiği söylenir. Ama bu işin felsefi yönlü tartışmalar da var. Gerçek bir random sayıda birbirini tekrarlayan aynı sayı olabilir mi? Bu sayının random olmasına bir engel midir.?

Random sayı üretiminde pc deki ses kartının hoparlör girişlerindeki parazitlerin kullanıldığını.. Ya da bir kamerada resimlerin piksellerin ton renklerini belli oranlarıyla sayılar oluşturup.. Bu 2 değişken arasında bir oranla rasgele sayılar elde ettiklerini duymuştum.
⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

mufitsozen

kucuk bir uyari.

rand() fonksiyonundan gelen bilgiyi modulo fonksiyonu ile istediginiz bir aralikta veri uretmek "modulo bias" dedigimiz bir hataya sebep olur.

benim tavsiyem bunun yerine bir while loop ile sadece istediginiz aralikta olan degerleri secmek.

yani:

do {
    rastgele = rand();
} while ( (x >= KUCUK) && (x <=BUYUK));

birde bulacaginiz bircok rand() uygulamasi 32 bit int degeri kullanir, onun icin MCUlarda kullanirken dikkatli olmak gerekir. ARMda calisan program PICde calismayabilir!
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Icarus

Alıntı yapılan: ground - 16 Mart 2014, 13:20:50
Random sayı üretimi gerçekten çok ilginç bir konu..

Ya da şöyle diyeyim gerçek bir random sayı üretmek çok zor ve önemli..

Bunun için analog dünyadan bazı bilgiler alınması gerektiği söylenir. Ama bu işin felsefi yönlü tartışmalar da var. Gerçek bir random sayıda birbirini tekrarlayan aynı sayı olabilir mi? Bu sayının random olmasına bir engel midir.?

Random sayı üretiminde pc deki ses kartının hoparlör girişlerindeki parazitlerin kullanıldığını.. Ya da bir kamerada resimlerin piksellerin ton renklerini belli oranlarıyla sayılar oluşturup.. Bu 2 değişken arasında bir oranla rasgele sayılar elde ettiklerini duymuştum.
Çok eskiden termal gürültüyü "beyazlatarak" sayı üreten bir sistem yapmıştım. Sayıların gerçekten rasgele olup olmadığını Chi-Square ile test etmiştim. Ama tartışmalı bir konu. Knuth'ın da dediği gibi "2 rasgele bir sayımıdır ?"

baran123

Korkuttunuz beni şimdi :D bu random düzgün çalışmayabilir mi yani kullanmaktan zarar gelir mi programın akısını engelleyecek bir durum olabilir mi ?

z



Devrenin cikisini ADC ile okuyabilirsiniz.

Zener gurultusunun benzeri bir yontem kullanilmis.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

baran123

Alıntı yapılan: Icarus - 16 Mart 2014, 13:45:57
Çok eskiden termal gürültüyü "beyazlatarak" sayı üreten bir sistem yapmıştım. Sayıların gerçekten rasgele olup olmadığını Chi-Square ile test etmiştim. Ama tartışmalı bir konu. Knuth'ın da dediği gibi "2 rasgele bir sayımıdır ?"

zaten benimde aklım almıyor orda 1-5 arası random belirtiroyum ama işlemci 2-3-4 arasından nasıl bir seçim yapıyor rasgele bir şeyi seçmek için biraz mantık gerekli işlemci bunu yapmaz gibime geliyor

Erhan YILMAZ

www.mcu-turkey.com/at89s52-ile-elektronik-zar-uygulamasi/ Şurda vakit zamanında ders projesi olarak bir uygulama yapmıştım. Genelde LFSR ile yapılıyor random işi. Bende 8 bit lfsr kullanmıştım. Lfsryi beslemek için sürekli çalışan timerdan değer giriyordum. Elde ettiğim 8bit sayının her bir dijitini bir zar değeri üretmek için kullanmıştım. Sonuç 0-6 arasında değilse tekrar ürettiriyordum. Sonuçlar güzeldi ama dağılım grafiğini v.s. ölçmedim. Uniform dağılım göstereni makbüldü heralde. Deney yapmak lazım, yani bin, 2 bin, 3 bin, 5 bin kere zar atıp denemek lazım. Gelen zar değerlerin adetlerini birbirine yakınsa rastgele üretiyor denilebilir.

Icarus

Alıntı yapılan: baranekrem9 - 16 Mart 2014, 22:41:41
zaten benimde aklım almıyor orda 1-5 arası random belirtiroyum ama işlemci 2-3-4 arasından nasıl bir seçim yapıyor rasgele bir şeyi seçmek için biraz mantık gerekli işlemci bunu yapmaz gibime geliyor
Çok doğru, rand() ile yaptığınız sayılar gerçekten rasgele değil aslında. Örneğin siz bir poker oyununu yapsanız ve kartları C'nin rand() fonksiyonu ile dağıtsanız.
Kodunuzu, rand() iç katsayılarını bile bilmeyen biri gelecek sonraki kartları kolaylıkla tahim edebilir.
http://en.wikipedia.org/wiki/Linear_congruential_generator
Aslında çok daha güzel bir açıklama Knuth'un The Art of Computer Programming'de bulunabilir.