VC++(Losowanie)

0

Jak przypisać losową wartość zmiennej <font color="blue">int</span> np. od 1 do 10. Wiem, że to już było dużo razy w poprzednich postach ale z tamtych nic nie rozumiem [???] może ktoś jeszcze raz mi to wytlumaczy.

0

Witaj . Wiem , że VC nie jest zbytnio intuicyjny , sam w nim pisze od tygodnia , ale jak mam jakiś problem to wchodze na yahoo i tam pisze np :
random in VC++
i wyszukuje mi odpowiedzi z róznych grup dyskusyjnych jak to zrobić
a do tego w pomocy jest napisane troche o funkcji rand() , ale do rzeczy :
potrzebujesz te pliki nagłówkowe :
#include
#include
#include
#include
następnie do stworzenia generatora liczb losowych służy funkcja srand() , aby za każdym razem były losowane inne liczby jako jej argument podajesz ile sekund minęło od 1 stycznia 1970 roku ( argument będzie za każdym razem inny , czyli srand będzie za każdym razem tworzył inny generator liczb losowych ) , do tego służy funkcja time() .
jak mamy już to , to trzeba skorzystać z funkcji rand() , funkcja ta zwraca wartość z przedziału 0 do RAND_MAX-1 ( w helpie do VC hjest chyba błąd bo pisze że zwraca od 0-RAND_MAX a to było by bardzo niepraktyczne) , gdzie RAND_MAX jest jakąś zdefiniowaną stałą ( lepiej nie zakładać że wszedzie ma tą samą wartość ) . Załużmy , że chcemy wylosować liczbe z przedziału 0-1 , czyli trzeba napisać rand()/(double)RAND_MAX . Zgadza sie ??
I już mamy wszystko , podsumowująć :
[code]srand((unsigned)time(NULL));
int wylosowana;
double max=10;
wylosowana=rand()/(double)RAND_MAXmax;[/code]
ten kod wylosuje liczbe z przedzilu 0 do max-1 , bo liczbe z przedzialu 0-1 pomnozymy razy 10 i wychodzi po zrzutowaniu liczba z przedzialu 0-9
a jak chcesz wylowac od 1-10 to nic prostszego :
wylosowana=1+rand()/(double)RAND_MAX
10;
mam nadzieje , że już wszystko jasne i nie popełniłem błędu

0

U mnie zawsze zwraca wartość <font color="red">2</span> :-(
U ciebie chodzi TrOuBLE ??

0

u mnie chodzi bez problemu , podaj twój kod to sprawdze u siebie

0

[code]srand((unsigned)time(NULL));
int wylosowana;
double max=10;
wylosowana=rand()/(double)RAND_MAX*max;[/code]

zwaraca zawsze 2 !! :-/

0

Nie moge się zalogować!! Wyżej to też jestem JA (GRUBER) [cygaro]

0

masz racje u mnie też nie chodzi tak jak powinno , podejrzewam , że argumenty przesyłane do srand() są prawie takie same ( różnica kilka do kilkanaście , w skali 2 miliardów ) , więc rand() na początku losuje bardzo bliskie siebie liczby , sprawdź to sobie na początku sprawdzając tylko to co zwróci sama funkcja rand() :
cout

0

Nie wiem, ty to piszesz chyba na dos-a?? Ja pisze VC++ . Przerabiamm to troche i niechodzi :-/ . (GRUBER) Ciągle nie moge się zalogować!!

0

jak zrobilem to pod mfc to też dobrze chodzi , mam VC++ 6

0

Bo ty tam napisaleś <font color="green">cout

0

<quote>Bo ty tam napisaleś <font color="green">cout

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