Witam.
Mam taki oto problem, że chciałbym, aby program dla każdego przebiegu pętli losował inną wartość. Jak to zrobić, bo próbowałem już różnych metod i nic nie działa…
Witam.
Mam taki oto problem, że chciałbym, aby program dla każdego przebiegu pętli losował inną wartość. Jak to zrobić, bo próbowałem już różnych metod i nic nie działa…
int main()
{
int ods;
int i=0;
/* ods = (int*)malloc(sizeof(int)); */
for (i = 0; i <= 200; i++)
{
srand((unsigned int)time(NULL));
ods = rand();
printf("%d\n", ods);
}
lub
int main()
{
for (int i = 0; i <= 200; i++)
{
printf("%d\n", rand());
}
Tylko nie wiem czemu chcesz resztę z dzielenia przez 500, jak coś to już 100 chociaż i to nie ma sensu bo rand zwraca inta a nie double.
EDIT:
Moja wina, nie zauważyłem że to o C chodzi. Ale raczej w C++ jest podobnie, ale nie powiem czy to w takim razie działa, zwłaszcza że dawno nawet w C++ się nie bawiłem więc nie mam 100% pewności co do tego co napisałem wyżej.
srand wywołuj tylko raz, na początku programu.
Podstawowy błąd w kodzie Ziomek Zemsty polega na tym, że zmienna ods jest wskaźnikiem do liczby całkowitej (czyli adresem pamięci zawierającym wartość typu int), a nie liczbą całkowitą:
int *ods;
ods = (int*)malloc(sizeof(int));
i dlatego późniejsze jej użycie w tym kodzie
ods = rand() % 500;
jest błędem, bo do wskaźnika jest przypisywana (losowa) wartość. Poprawnie powinno być tak:
*ods = rand() % 500;
printf("%d\n", *ods);
Dlaczego akurat takie podejście autora (poprzez wskaźnik), nie mam pojęcia, ale jak widać nie bardzo umie ich używać.
Drugim (mniej istotnym) błędem jest wstawienie wywołania funkcji srand w pętli for (zamiast raz na początku)