Proton ile 1-8 arası rasgele sayı üretmek istiyorum.Nasıl Yapabilirim?Yardımlarınız için teşekkürler.
@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
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...
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.
Denedim ama olmadı.Hep aynı sayılar üretiliyor.
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.
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.
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...
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..