[C] Problem z losowaniem + sqrt
Ostatnio zmodyfikowano 2013-11-01 03:54
james5 Temat założony przez niniejszego użytkownika |
[C] Problem z losowaniem + sqrt » 2013-11-01 00:29:50 Po pierwsze, chciałem się przywitać :) Ale do rzeczy, mam 2 problemy: 1. Czy jeżeli losuję liczbę rzeczywista w zakresie od -a do a, czyli <-a, a> ( wystarczy 2 miejsca po przecinku gdyż nie musi być za dokładna ) to mogę zrobić tak: double l1=rand() % 200*a -100.0*a)/100.0; ??? wczesniej czywiscie uzylem srand (time(NULL)); zastanawiałem się nad takim czymś: l1=rand()%2*a-a+1+(double)rand()/RAND_MAX;, ale wtedy występuje jeszcze większy zakres błędu(fukncji ktora sumuje pkty sumujące jakaś tam zależność -> więcej pktow to dokładniejsza odpowiedź, a tu niekoniecznie), ale wtedy na 100% jest problem w pkt. 2 2. Wyskakuje mi taki warning: "incompatible implicit declaration of built-in function 'sqrt' [enabled by default]|" w tej linijce mam coś takiego: double V=sqrt((l1*l1+l2*l2)); l1 i l2 są typu double
Z góry dziękuję za wyjaśnienie mi błędów :)
@Edit2 OK. Przypomniałem sobie, że modula ma najwyższy priorytet, więc 200*a mmuszę dać w nawias, aaaale zmienna a jest typu double i wyskakuje kolejny błąd :/ chyba po prostu dam (int) przed nawiasem, a część ułamkową niech sobie zje... chyba, że ktoś ma lepszy pomysł :) |
|
den93 |
» 2013-11-01 03:54:35 1. Chyba bym to zrobił raczej w taki sposób: double zk = 100.0, los; srand( GetTickCount() ); double s = rand() << 15 | rand(); s /= 0x3FFFFFFF; los = 2.0 * zk * s - zk;
los = double( rand() << 15 | rand() ) / 0x3FFFFFFF * zk * 2.0 - zk;
|
|
« 1 » |