Frish Temat założony przez niniejszego użytkownika |
[Lekcja 16] - Losowanie liczby z określonego zakresu » 2013-03-21 19:05:48 Witam
chciałbym się dowiedzieć czy podany przez autora wzór na losowanie liczby z określonego zakresu "wylosowana_liczba =( rand() % ile_liczb_w_przedziale ) + startowa_liczba" jest sztywnym wzorem stworzonym wcześniej przez kogoś i zawsze się go stosuje aby wylosować liczbę z określonego zakresu, czy też autor tego kursu sam go ułożył i można tworzyć inne tym podobne wzory aby osiągnąć ten sam cel maszyny losującej, jak również poszerzać ten wzór o nowe możliwości? |
|
Chlorek |
» 2013-03-21 19:17:58 Ten "wzór" wynika z logiki i jest powszechnie stosowany, jakoś nie widzę sensu zmiany tego sposobu. #Edit Jeśli cię to interesuje to w sumie nie widzę innego sensownego sposobu. Podzielenie wylosowanej liczby przez 'największą liczbę jaką chcesz uzyskać', oznacza że reszta z takiego dzielenia nie przekroczy tej maksymalnej liczby (czyli uzyskujemy tyle ile chcemy, bo wlicza się też zero - resztą może być zero), potem dodanie jakiejś wartości by nadać niezależnie od wyniku losowania jakąś minimalną wartość. Innych cudów matematycznych nie wymyślisz. |
|
Frish Temat założony przez niniejszego użytkownika |
» 2013-03-21 19:30:06 Czyli sugerujesz ze jeżeli wynika z logiki to Ty na przykład nie czytając lekcji o tym wzorze byłbyś w stanie sam go wymyśleć ponieważ wynika on z logiki albo wymyśleć tym podobny o innym zastosowaniu i działałby on w jeżyku cpp...? chodzi o to czy w tym wrzorze można coś zmienić poza liczbami. czy można dodać dodatkowe liczby i znaki aby osiągnąć inny typ wzoru.
pozdrawiam i dziękuje za odpowiedz. |
|
Frish Temat założony przez niniejszego użytkownika |
» 2013-03-21 19:33:11 poprostu chce wiedzieć czy ten wzór jest sztywnym wzorem (tak jak np. elementy jezyka czyli std::cout albo std::endl) i inna konfiguracja (oczywiście logiczna) nie będzie już działała. |
|
pekfos |
» 2013-03-21 19:35:04 To, czy napiszesz 2 + 2 * 2 czy 2 * 2 + 2 nie robi różnicy. |
|
Chlorek |
» 2013-03-21 19:35:42 No właściwie można - uczyłem się C++ już parę ładnych lat temu z kursów, których już dzisiaj w internecie nie ma, a metoda którą poznałem była ta sama, czy bym sam na nią wpadł to nie wiem, wtedy miałem dopiero jakieś 10 lat i szczerze miałem bardzo małe pojęcie o matematyce i programowaniu, pisałem bardzo szablonowo według kursów nie myśląc za wiele nad alternatywami. Poza tym c++, czy jakikolwiek inny język - to jest matematyka, mało zależne od tego w czym piszesz. Jeśli chcesz wiedzieć to sam używam trochę innego wzoru, gdy coś losuję, ale zasada działania jest dokładnie ta sama. Jak napisał pekfos, czy napiszesz 2+2*2 czy 2*2+2 nie robi różnicy. Ewentualnie można jedynie bardziej zrobić niektóre rzeczy przejrzyście (ja ułatwiam sobie przy losowaniu w dużym zakresie próg maksymalny, bo przecież na koniec dodajemy jakąś liczbę, by uzyskać minimum). |
|
Frish Temat założony przez niniejszego użytkownika |
» 2013-03-21 19:45:06 macie racje i otrzymalem odpowiedz na swoje pytanie, teraz wiem że moge ulozyć tez swój wzór i jezeli bedzie logiczny i miał jakies przeznaczenie to będzie działał. Ale nasuwa mi się jeszcze jedno pytanie bo chce zrozumieć sens działania tej funkcji "rand". Jeżeli mamy ten wzór "( rand() % x) + y". To w przypadku gdy podstawimy pod x = 50 a pod y = 5. to skad ta funkcja rand wie że ma losować z przedziału właśnie 50 -ciu liczb?starajcie mi się to po chlopsku wytłumaczyć. |
|
SeaMonster131 |
» 2013-03-21 19:51:55 int liczba = rand() % 50 + 5;
To to samo, co int liczba; liczba = rand() % 50; liczba += 5;
|
|
« 1 » 2 3 4 |