Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Lekcja 16] - Losowanie liczby z określonego zakresu

Ostatnio zmodyfikowano 2013-04-21 14:15
Autor Wiadomość
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?
P-79040
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.
P-79042
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.
P-79045
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.
P-79046
pekfos
» 2013-03-21 19:35:04
To, czy napiszesz
2 + 2 * 2
 czy
2 * 2 + 2
 nie robi różnicy.
P-79047
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).
P-79048
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ć.
P-79052
SeaMonster131
» 2013-03-21 19:51:55
C/C++
int liczba = rand() % 50 + 5;
To to samo, co
C/C++
int liczba;
liczba = rand() % 50;
liczba += 5;
P-79054
« 1 » 2 3 4
  Strona 1 z 4 Następna strona