Random в С++

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

ROBOT_rus
Сообщения: 8
Зарегистрирован: 05 мар 2008, 17:37

04 апр 2008, 10:06

Поставил srand , всёравно таже фигня - выдаёт каждый раз одни и теже значения.

Код: Выделить всё

#include <iostream.h>
#include <stdlib.h>

int GetRandom(int rand_count) 
{
	for (int i =0;i < rand_count; i++)
	{
		cout << rand() << endl;
	}
	return rand_count;
}

void main()
{
	srand(10);
	GetRandom ( 10 );
}


Если поменять значение в srand(); то числа выводимые меняются) чтоже мне теперь каждый раз руками менять ?
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

04 апр 2008, 11:18

ROBOT_rus писал(а):Поставил srand , всёравно таже фигня - выдаёт каждый раз одни и теже значения.
..................................
Если поменять значение в srand(); то числа выводимые меняются) чтоже мне теперь каждый раз руками менять ?
BBB писал(а): http://msdn2.microsoft.com/en-us/library/398ax69y.aspx

(Там внизу страницы, к слову, неплохой пример есть, в частности, как получить число в нужном диапазоне, как инициализировать srand новым ["случайным"] числом:

// Seed the random-number generator with the current time so that
// the numbers will be different every time we run.
srand( (unsigned)time( NULL ) );

)
. .
Albor
Сообщения: 482
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

07 апр 2008, 18:29

Наверное нужно пояснить, что инициализация генератора функцией time с параметром NULL, приводит к генерации каждый раз разной последовательности, так как данная функция, возвращает, по-моему, текущее время в милисекундах - значит srand, при каждом запуске программы будет получать число, отличное от предыдущих. А если в srand передавать константу, то и результат всегда будет один и тот же.
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

08 апр 2008, 09:50

Albor писал(а):Наверное нужно пояснить, что инициализация генератора функцией time с параметром NULL, приводит к генерации каждый раз разной последовательности, так как данная функция, возвращает, по-моему, текущее время в милисекундах ....
MSDN дает следующее описание. Время, таки, оказалось в секундах, [s]прошедших со времен царя Гороха[/s] считая от полуночи January 1, 1970:

Код: Выделить всё

[b]time[/b]
Gets the system time.

[b]time_t time( time_t *timer );[/b]

[b]Parameter[/b]

[i]timer[/i] - Storage location for time

[b]Remarks[/b]

The [b]time[/b] function returns the number of seconds elapsed since midnight
(00:00:00), January 1, 1970, coordinated universal time, according to the
system clock. The return value is stored in the location given by [i]timer[/i]. This
parameter may be [b]NULL[/b], in which case the return value is not stored.
Vovchik
Сообщения: 190
Зарегистрирован: 28 фев 2008, 18:32
Контактная информация:

08 апр 2008, 10:20

ROBOT_rus, а ты в mein() в начале напиши randomize(); ето команда запускает генератор случайных чисел а потом командой rand()%(число) ты выбераеш границу от 0 до (число)-1 !!!! :D :D
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

08 апр 2008, 13:00

Vovchik писал(а):ROBOT_rus, а ты в mein() в начале напиши randomize(); ето команда запускает генератор случайных чисел а потом командой rand()%(число) ты выбераеш границу от 0 до (число)-1 !!!! :D :D
Угу. А самые умные сейчас пойдут грузить чугуний (c)

1) Нет в MS C++ ф-ии randomize();
2)
BBB писал(а):rand не имеет параметров:

The rand function returns a pseudorandom integer in the range 0 to RAND_MAX. Use the srand function to seed the pseudorandom-number generator before calling rand.
Ответить