Wątek przeniesiony 2015-02-17 12:20 z C/C++ przez ŁF.

Pseudo losowanie

0

Witajcie, mam do Was małe pytanko - mam taki oto kod

 
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <time.h>
#include <ctime>
#include <cstdio>
using namespace std;

int wylosowane[102];

int main()
{
	srand(time(NULL)); // gdy ta funkcja jest tutaj wy****dala jakies liczby z d**y
	
    for (int i=1; i<=100; i++)
    {
    	srand(time(NULL)); // ale gdy jest tutaj co 0.1 sekundy przez 10 wy'print'owań pokazuje się jedna liczba
        wylosowane[i]=rand()%101; //losowanie w C++
		cout<<wylosowane[i]<<endl;
		Sleep(100);
    }
	
	getch();
	return 0;
}

Od czego losowanie liczb poprzez pobieranie czasu (będącego w pętli i bez)?

0

Wstawiaj kod w znaczniki.
Funkcja srand(...) powinna być wywołana tylko raz, na samym początku programu. Twój pierwszy komentarz w kodzie niezbyt dokładnie określa co tak naprawdę losuje, według mnie powinny to być liczby z zakresu 0-100...
Poza tym w pętli for niepotrzebnie ustawiasz zmienną i na 1 - element wylosowane[0] będzie przez to pusty.
Po co dodajesz do programu nagłówek time.h?
Instrukcja return 0; nie jest wymagana w main(), mimo, że funkcja ma typ zwracany int.

[cytat]Od czego losowanie liczb poprzez pobieranie czasu (będącego w pętli i bez)? - że co?

0

Na poprawie kodu nie za bardzo mi zależało, no ale dzięki za wskazówki.

Nie wiem jak się wysłowić.. Na czym polega różnica, gdy srand(time(NULL)) jest poza pętlą i w pętli?

1

srand() określa tzw. seed, czyli ziarno generatora. Na jego podstawie losowane są liczby. Zasadniczo, jeżeli podasz ten sam seed, otrzymasz zawsze te same kolejne liczby. Dlatego w argumencie podaje się time(), który zwraca aktualny czas - dzięki temu pewne jest, że nigdy program nie otrzyma tego samego seeda przy ponownym uruchomieniu. W ramach testu podaj do srand() jakąś wartość stałą, a zobaczysz, że wyniki losowań będą zawsze takie same.

Wystarczy podać seeda raz, ponieważ przy każdej jego zmianie konstruowany jest od nowa generator liczb pseudolosowych.chyba

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