c++ generator liczb - mały problem

0
int main
{ 
    unsigned int a,b,mac[30][30];
    srand(time(NULL));
    a=rand()%20+2;

    for(int i=0; i<a; i++)
            for(int j=0; j<a; j++)
               {
                   mac[i][j]=rand()%9+0;
                   cout<<mac[i][j]<<' ';
                }

   return 0;
}

Mam pytanie jak zrobić, żeby więcej losowało liczbe 0?

0

np.

int x = (rand() % 11) - 2;
if(x  < 0) x = 0;

//i nie "więcej" tylko "częściej"

0

thx, problem w tym, że chciałem stworzyć macierz która będzie również zawierała elementy liczb ujemnych. Moje losowanie liczb jest złe, dlatego proszę o pomoc...

0

No to zrób tak samo, tylko dolną górną/granicę przesuń wyżej/niżej i obcinaj. Programowanie ma to do siebie, że trzeba pomyśleć.
Zawsze możesz napisać własną funkcję generowania liczb pseudolosowych o wybranym przez Ciebie prawdopodobieństwie wylosowania konkretnych liczb.

0

to drugie brzmi interesująco, jak można coś takiego zrobić? masz jakąś dobrą strone gdzie to jest przystępnie opisane?

0

Wiem, tylko, że to jest zabawa z matematyką dyskretną, statystyką, a w tym Ci nie pomogę

0

oki, thx. Zostanę jednak przy pierwszej Twojej myśli :)

0

mam, jeszczo jedno pytanie, jak rzutować wynik z tablicy typu int na float?

0

yyy

float a;
int b[] = {5, 10, 15};
a = b[1];
0

@up:
A może taki sposób:
'MojaLosowaLiczba = GetTickCount%Granica' ?
% to w C++ oznacza modulo, tak ?

0

@Patryk27: i co to niby ma zrobić? Ani to losowe, ani z sensem

0

Żadna wymyślna matematyka nie jest konieczna:

int wylosowana;
double x=rand();
if(x<0.15) x=0
else if(x<0.35) x=1
else if(x<0.66) x=2
else x=3;

Powyższy kod wylosuje 0 z prawdopodobieństwem 0.15, 1 z prawdopodobieństwem 0.20, 2 z prawdopodobieństwem 0.31, 3 z prawdopodobieństwem 0.34.

0
Patryk27 napisał(a)

% to w C++ oznacza modulo, tak ?

prawie;p procent oznacza operator reszty z dzielenia (różnica działania dla liczb ujemnych)

1 użytkowników online, w tym zalogowanych: 0, gości: 1