Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

generiranje slučajnih brojeva
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 12:37 pet, 14. 11. 2008    Naslov: generiranje slučajnih brojeva Citirajte i odgovorite

[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 Very Happy

edit2: sad je ovo ok, uz SickJedijevu pomoć Very Happy



_________________
"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 Very Happy


Zadnja promjena: Luuka; 13:58 pet, 14. 11. 2008; ukupno mijenjano 1 put.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
SickJedi
Moderator
Moderator


Pridružen/a: 01. 10. 2004. (16:41:56)
Postovi: (3BC)16
Spol: muško
Sarma = la pohva - posuda
12 = 42 - 30
Lokacija: Esperantija

PostPostano: 13:41 pet, 14. 11. 2008    Naslov: Citirajte i odgovorite

#include <stdlib.h> - trebaju ga srand i rand

#include <time.h> - treba ga time


srand ((unsigned) time (NULL));
zamisljeni_broj=rand()%100+1;

Ove dvije naredbe ce ti izbacit broj izmedju jedan i sto. Pri pokretanju samog programa ce svaki put biti drugi rand broj.

Baci oko na stare vjezbe iz C-a. Ovo je konkretno iz vjezbi 26.
#include <stdlib.h> - trebaju ga srand i rand

#include <time.h> - treba ga time


srand ((unsigned) time (NULL));
zamisljeni_broj=rand()%100+1;

Ove dvije naredbe ce ti izbacit broj izmedju jedan i sto. Pri pokretanju samog programa ce svaki put biti drugi rand broj.

Baci oko na stare vjezbe iz C-a. Ovo je konkretno iz vjezbi 26.



_________________
Marvin (from Hitchhiker's Guide to the Galaxy) I bow before youVeliki Limun, on je kiseo i zut Bow to the left Marvin (from Hitchhiker's Guide to the Galaxy)
Depression is merely anger without enthusiasm.
There's no place like 127.0.0.1
Ken Lee je zakon!!!
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice MSNM
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 13:57 pet, 14. 11. 2008    Naslov: Citirajte i odgovorite

Hvala! Sad radi baš kako bi trebalo :karma:

p.s. Stavio sam to u gornji program pa možda posluži još kome
Hvala! Sad radi baš kako bi trebalo karma++

p.s. Stavio sam to u gornji program pa možda posluži još kome



_________________
"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 Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3560)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 14:13 pet, 14. 11. 2008    Naslov: Re: generiranje slučajnih brojeva Citirajte i odgovorite

[quote="Luuka"]znam da ne postoji savršen[/quote]

Pitanje je sto je "savrseno", no [url=http://random.irb.hr/]ovo[/url] je barem blizu. ;)
Luuka (napisa):
znam da ne postoji savršen


Pitanje je sto je "savrseno", no ovo je barem blizu. Wink



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
desire
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 06. 09. 2007. (07:46:21)
Postovi: (133)16
Spol: žensko
Sarma = la pohva - posuda
31 = 34 - 3

PostPostano: 18:05 pet, 14. 11. 2008    Naslov: Citirajte i odgovorite

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.... Very Happy
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?



_________________
Namigujem ti, a ti ne gledas...
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 18:09 pet, 14. 11. 2008    Naslov: Citirajte i odgovorite

Staviš rand()%20 +1. Jer rand da neki broj, pa onaj % da ostatak dijeljenja sa 20, i još tom ostatku dodaš 1. I imaš broj iz [1,20] :D
Staviš rand()%20 +1. Jer rand da neki broj, pa onaj % da ostatak dijeljenja sa 20, i još tom ostatku dodaš 1. I imaš broj iz [1,20] Very Happy



_________________
"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 Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
desire
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 06. 09. 2007. (07:46:21)
Postovi: (133)16
Spol: žensko
Sarma = la pohva - posuda
31 = 34 - 3

PostPostano: 18:13 pet, 14. 11. 2008    Naslov: Citirajte i odgovorite

[quote="Luuka"]Staviš rand()%20 +1. Jer rand da neki broj, pa onaj % da ostatak dijeljenja sa 20, i još tom ostatku dodaš 1. I imaš broj iz [1,20] :D[/quote]

Nece... :? Opet baca iste.... :(
Luuka (napisa):
Staviš rand()%20 +1. Jer rand da neki broj, pa onaj % da ostatak dijeljenja sa 20, i još tom ostatku dodaš 1. I imaš broj iz [1,20] Very Happy


Nece... Confused Opet baca iste.... Sad



_________________
Namigujem ti, a ti ne gledas...
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 18:15 pet, 14. 11. 2008    Naslov: Citirajte i odgovorite

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 Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
mibo
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 04. 10. 2007. (14:52:50)
Postovi: (51)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
= 6 - 3
Lokacija: /var/tmp

PostPostano: 19:33 pet, 14. 11. 2008    Naslov: Generator pseudoslučajnih brojeva s 'malo' većim periodom Citirajte i odgovorite

[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]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan