Picproje Elektronik Sitesi

DERLEYİCİLER => PICBasic => Konuyu başlatan: farukzeynep - 27 Ekim 2004, 07:15:57

Başlık: Proton ile rasgele sayı üretmek
Gönderen: farukzeynep - 27 Ekim 2004, 07:15:57
Proton ile 1-8 arası rasgele sayı üretmek istiyorum.Nasıl Yapabilirim?Yardımlarınız için teşekkürler.
Başlık: Proton ile rasgele sayı üretmek
Gönderen: fsan - 27 Ekim 2004, 11:47:11
@farukzeynep

proton+ manualine bir gözat.
RANDOM Generate a pseudo-random number
x=random gibi bir yöntem ile

http://www.picbasic.org/forum/showthread.php?t=2085&highlight=random
Başlık: Proton ile rasgele sayı üretmek
Gönderen: farukzeynep - 27 Ekim 2004, 23:43:48
Aynen dediğin gibi yaptım fsan.Ama hep aynı sayılar üretiliyor ve istediğim sınırlar içerisinde sayılar üretemiyorum.Bir çözüm lütfen...
Başlık: Proton ile rasgele sayı üretmek
Gönderen: fsan - 27 Ekim 2004, 23:43:59
merhaba,
Proton+ helpte "RANDOM" yazinca asagidaki örnege rastladim

Alıntı YapOverview
Seed the random number generator, in order to obtain a more random result.
bunu bir denermisin?
Alıntı YapSEED

Syntax
SEED Value

Availability
All devices.

Overview
Seed the random number generator, in order to obtain a more random result.

Operators
Value can be a variable, constant or expression, with a value from 1 to 65535. A value of $0345 is a good starting point.

Example

' Create and display a RANDOM number
DEVICE = 16F877
XTAL = 4
DIM RND AS WORD

SEED $0345
CLS
AGAIN:
RND = RANDOM
PRINT AT 1,1,DEC RND, "     "
DELAYMS 500
GOTO AGAIN

See also: RANDOM.
Başlık: Proton ile rasgele sayı üretmek
Gönderen: farukzeynep - 28 Ekim 2004, 00:08:00
Denedim ama olmadı.Hep aynı sayılar üretiliyor.
Başlık: Proton ile rasgele sayı üretmek
Gönderen: fsan - 28 Ekim 2004, 00:49:00
biriside de söyle bir sey yapmis
DICE = ((RANDOM / 2) & 6) ' MAKE SURE DICE IS NOT GREATER THAN 6

bu kodda DICE degiskenin 6 dan üsteki sayilari kabul etmemesi saglaniyor.
Başlık: Proton ile rasgele sayı üretmek
Gönderen: ftsahin - 28 Ekim 2004, 10:00:40
Pic'in içinde timer olmadığı için random olarak üretilen sayıların hep aynı çıkması normaldir. Gerçekten random sayı üretmek istiyorsanız ya realtime clock kullanmalısınız ya da bir sayı dögüsü içerisinde kullanıcıdan veya başka bir sistemden bilgi alması lazım. Mesela bir döngü içerisinde bir butona basılınca sayının o anki değerine göre rsagele sayı üretirseniz gerçek bir random sayı üretmiş olursunuz.
Başlık: Parazitik Rasgelelik
Gönderen: DumrulBey - 28 Ekim 2004, 11:33:10
Merhaba,

Evet, gerçekten teoride bir saat mekanizmasından alınan veri denklem içine konularak rasgele sayılar üretiliyor. Bir de PIC için kullanabileceğimiz PRM (Parazitik Rasgelelik Metodu) yöntemi var. Tabii ihtiyacınız olan bu sefer saat yerine ADC (Analog Digital Convertor) ve boş bir bacak. Analog bilgi girişi alabileceğimiz bacağa, bir ucu boşta bir kaç tur sarılı bobin koymak yeterli.

Oluşturacağınız denkleme ADC'den aldığınız değer üst ve alt sınır (limit) değerlerini ile üst üste tekrar etme şartını ekleyerek yaparsanız daha işlevsel (functional) bir alt program (sub routine) çıkar. Ben PIC Basic bilmiyorum! Artık bilen bir arkadaş bu alt programı pek zorlanmadan yazabilir. Sadece biraz matematik.

Başarılar...
Başlık: Proton ile rasgele sayı üretmek
Gönderen: fsan - 28 Ekim 2004, 22:32:11
Alıntı yapılan: fsan(Resim gizlendi görmek için tıklayın.)
DEVICE 16F84
XTAL 4
SEED $0345

DIM ZAR[6] AS BYTE

'          abcdefg            a
ZAR[0] =  %10011111 '1      -------
ZAR[1] =  %00100101 '2   f |       | b
ZAR[2] =  %00001101 '3     |   g   |
ZAR[3] =  %10011001 '4      -------
ZAR[4] =  %01001001 '5   e |       | c
ZAR[5] =  %01000001 '6     |       |
'                           -------  o dp
'                              d

TRISA = %11001
TRISB = %00000001
PORTA = 0
PORTB = 0

DIM ZAR1 AS BYTE
DIM ZAR2 AS BYTE
DIM I AS BYTE
DIM X AS BYTE

GOSUB ZAR_AT
X = 0

BASLA:
   IF X = 0 THEN
    PORTB = ZAR[ZAR1]
    HIGH PORTA.1
    X = 1
   ELSE
    PORTB = ZAR[ZAR2]
    HIGH PORTA.2
    X = 0
   ENDIF
   DELAYMS 10
   IF PORTA.0 = 1 THEN GOSUB ZAR_AT
   LOW PORTA.1
   LOW PORTA.2
GOTO BASLA

ZAR_AT:
HIGH PORTA.1
HIGH PORTA.2
FOR I = 5 TO 0 STEP -1
HIGH PORTB
DELAYMS 50
PORTB = ZAR[I]
DELAYMS 100
NEXT
ZAR1 = ((RANDOM /2) & 5) ' ZAR 6 DAN BÜYÜK OLMASIN
ZAR2 = ((RANDOM /2) & 5)
RETURN
http://home.no/fsan/projects/Diverse/zar/

iyide arkadaslar,
bu RANDOM komutunu niye yapmislar veya nasil kullanacagiz peki?

yukaridaki kod yazip denedim ehh, sonuc fena değil :P
zamaniniz olursa birde siz gözatin belki benim gözden kacirdigim bir sey vardir

Sevgiler, saygilar..