[C++] странность с рандомом

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by fl00der, 19 Nov 2012.

  1. fl00der

    fl00der Moderator

    Joined:
    17 Dec 2008
    Messages:
    1,028
    Likes Received:
    310
    Reputations:
    86
    Borland C++ Builder 6.
    Code:
    //...
    #include <math.h>
    //...
    {
            randomize;
            float a[n];
            for (int i=0;i<n;i++) {
                    a[i]=random(100);
                    Memo1->Lines->Add(FloatToStr(a[i]));
    
            }
    Почему-то случайные числа каждый раз одинаковые и они получаются не дробные, хотя явно происходит деление на 100.
     
    _________________________
  2. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    В visual studio, но, думаю тебе надо это:

    Code:
    int matrixWidth = 10;
    int matrixHeight = 10;
    //initialize random number generator
    	srand(time(0));
    
    	for(int a = 0; a < nRandomObjects; a++)
    	{
    		//generate 10 structures with x / y into vector
    		itemObj thisObj;
    		
    		thisObj.x = (rand() % matrixWidth)  + 0; //in range of 0 - 10
    		thisObj.y = (rand() % matrixHeight) + 0; //in range of 0 - 10
    
    		vecObjects.push_back(thisObj);
    	}
    
     
    #2 DeepBlue7, 19 Nov 2012
    Last edited: 19 Nov 2012
  3. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    DeepBlu7 верно подсказал. Для рандома берётся текущее время иначе будет выдавать одни и теже результаты.(Можно брать и другие значения вроде температуры проца и т.д., но это для особого хардкора)
    Вот тут можно ещё ознакомиться с материалом и посмотреть как генерировать числа в определённых диапозонах.