Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
Luuka Forumaš(ica)
Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol:
Lokacija: Hakuna Matata
|
Postano: 12:37 pet, 14. 11. 2008 Naslov: generiranje slučajnih brojeva |
|
|
[code:1]#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int da=1;
srand((unsigned) time (NULL));
while(da)
{
int x=rand()%100+1;
printf("%d\n",x);
printf("DA? ");
scanf("%d",&da);
}
return 0;
}[/code:1]
Trebao bi mi jedan ok generator slučajnih brojeva iz [1,100]... znam da ne postoji savršen, ali kako ovo gore modificirat da bude čim veći period ponavljanja brojeva? Ovdje svaki put mijenjam seed al nije baš zadovoljavajuće.
Hvala
edit: Uspio sam, može se pobrisat topic, treba samo jednom zvati srand, sad je ovo zadovoljavajuće... samo svaki put kad se ispočetka pokrene program idu isti brojevi, tj da se spremi na istu adresu... ali zadovoljavajuće :D
edit2: sad je ovo ok, uz SickJedijevu pomoć :D
Kod: | #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int da=1;
srand((unsigned) time (NULL));
while(da)
{
int x=rand()%100+1;
printf("%d\n",x);
printf("DA? ");
scanf("%d",&da);
}
return 0;
} |
Trebao bi mi jedan ok generator slučajnih brojeva iz [1,100]... znam da ne postoji savršen, ali kako ovo gore modificirat da bude čim veći period ponavljanja brojeva? Ovdje svaki put mijenjam seed al nije baš zadovoljavajuće.
Hvala
edit: Uspio sam, može se pobrisat topic, treba samo jednom zvati srand, sad je ovo zadovoljavajuće... samo svaki put kad se ispočetka pokrene program idu isti brojevi, tj da se spremi na istu adresu... ali zadovoljavajuće
edit2: sad je ovo ok, uz SickJedijevu pomoć
_________________ "Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy
Zadnja promjena: Luuka; 13:58 pet, 14. 11. 2008; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
SickJedi Moderator
Pridružen/a: 01. 10. 2004. (16:41:56) Postovi: (3BC)16
Spol:
Lokacija: Esperantija
|
|
[Vrh] |
|
Luuka Forumaš(ica)
Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol:
Lokacija: Hakuna Matata
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
desire Forumaš(ica)
Pridružen/a: 06. 09. 2007. (07:46:21) Postovi: (133)16
Spol:
|
Postano: 18:05 pet, 14. 11. 2008 Naslov: |
|
|
Eh Luuka, Luuka, upravo krenuh otvoriti temu sa slicnim pitanjem.... :D
Al meni treba nesto malo drugacije...
Dakle, kopala sam malo po vjezbama iz C-a, nasla taj rand i srand, natipkala ovaj kod da vidim kak to radi:
[code:1]#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main () {
int a[20], i;
srand (time(0));
for (i=0; i<=19; i++){
a[i]=rand()%21;
printf ("%d ", a[i]);
}
scanf ("\n") ;
return 0;
}[/code:1]
i sad imam pitanje... jel ovo ok ili treba nesto modificirati? (ovo je samo ogledni primjerak, znam da mi zasad ne funkcionira onak kak bi trebalo...)
meni treba 20 razlicitih brojeva izmedju 1 i 20. jel postoji neki ljepsi nacin za to dobiti (neka modifikacija funkcije rand) ili bas moram rucno provjeravati je li izbaceni broj razlicit od 0 tj. od vec prije upamcenih brojeva?
Eh Luuka, Luuka, upravo krenuh otvoriti temu sa slicnim pitanjem....
Al meni treba nesto malo drugacije...
Dakle, kopala sam malo po vjezbama iz C-a, nasla taj rand i srand, natipkala ovaj kod da vidim kak to radi:
Kod: | #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main () {
int a[20], i;
srand (time(0));
for (i=0; i<=19; i++){
a[i]=rand()%21;
printf ("%d ", a[i]);
}
scanf ("\n") ;
return 0;
} |
i sad imam pitanje... jel ovo ok ili treba nesto modificirati? (ovo je samo ogledni primjerak, znam da mi zasad ne funkcionira onak kak bi trebalo...)
meni treba 20 razlicitih brojeva izmedju 1 i 20. jel postoji neki ljepsi nacin za to dobiti (neka modifikacija funkcije rand) ili bas moram rucno provjeravati je li izbaceni broj razlicit od 0 tj. od vec prije upamcenih brojeva?
_________________
|
|
[Vrh] |
|
Luuka Forumaš(ica)
Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol:
Lokacija: Hakuna Matata
|
|
[Vrh] |
|
desire Forumaš(ica)
Pridružen/a: 06. 09. 2007. (07:46:21) Postovi: (133)16
Spol:
|
|
[Vrh] |
|
Luuka Forumaš(ica)
Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol:
Lokacija: Hakuna Matata
|
Postano: 18:15 pet, 14. 11. 2008 Naslov: |
|
|
Uzmi ono moje gore, pa samo stavi da ide u niz ako je različit od dosada ubačenih u niz... meni taj kod baca uvijek različite.
Uzmi ono moje gore, pa samo stavi da ide u niz ako je različit od dosada ubačenih u niz... meni taj kod baca uvijek različite.
_________________ "Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy
|
|
[Vrh] |
|
mibo Forumaš(ica)
Pridružen/a: 04. 10. 2007. (14:52:50) Postovi: (51)16
Spol:
Lokacija: /var/tmp
|
Postano: 19:33 pet, 14. 11. 2008 Naslov: Generator pseudoslučajnih brojeva s 'malo' većim periodom |
|
|
[code:1]#define M 256
#define SWAP(A, B)(A ^= B ^= A ^= B)
unsigned char S[M], K[M];
void inicijaliziraj(unsigned char k[], short n){
register short i, j;
for(i = 0; i < M; i++)
S[i] = (unsigned char)i;
for(i = 0; i < M; i++)
K[i] = k[i % n];
for(i = 0, j = 0; i < M; i++){
j = (j + S[i] + K[i]) % M;
SWAP(S[i], S[j]);
}
}
unsigned char daj(void){
static short i = 0, j = 0;
i = (i + 1) % M;
j = (j + S[i]) % M;
SWAP(S[i], S[j]);
return S[((S[i] + S[j]) % M)];
}[/code:1]
@Luuka: nakon inicijalizacije stanja funkcijom [tt]inicijaliziraj[/tt] pozivaš funkciju [tt]daj[/tt] toliko puta koliko bajta trebaš B-)
Kod: | #define M 256
#define SWAP(A, B)(A ^= B ^= A ^= B)
unsigned char S[M], K[M];
void inicijaliziraj(unsigned char k[], short n){
register short i, j;
for(i = 0; i < M; i++)
S[i] = (unsigned char)i;
for(i = 0; i < M; i++)
K[i] = k[i % n];
for(i = 0, j = 0; i < M; i++){
j = (j + S[i] + K[i]) % M;
SWAP(S[i], S[j]);
}
}
unsigned char daj(void){
static short i = 0, j = 0;
i = (i + 1) % M;
j = (j + S[i]) % M;
SWAP(S[i], S[j]);
return S[((S[i] + S[j]) % M)];
} |
@Luuka: nakon inicijalizacije stanja funkcijom inicijaliziraj pozivaš funkciju daj toliko puta koliko bajta trebaš B-)
_________________ WAR IS PEACE
FREEDOM IS SLAVERY
IGNORANCE IS STRENGTH
George Orwell: 1984
|
|
[Vrh] |
|
|