Собсно как?)) Полазил в гугле - все советуют (например для random 0-99) int r=random(100);
Но я так пытался сделать-при компиляции вылезает ошибка про undeclared indentifier
что делать?)) Может какие .h подключать нада? Или как?
Random в С++
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Я так понимаю, эти ф-ии еще и компилятор-зависимые.
Например, в Borland C++ (хедер STDLIB.H) есть ф-ии random, rand, randomize, srand.
А в Microsoft C++: srand и rand
Например, в Borland C++ (хедер STDLIB.H) есть ф-ии random, rand, randomize, srand.
А в Microsoft C++: srand и rand
Использую Visual c++ 6
пишу
вылезает таже ошибко про undeclared indentifier
пишу
Код: Выделить всё
#include <iostream.h>
#include <math.h>
void main()
{
int x=rand(10);
cout << x;
}
Следующий текст ошибки, по-видимому, будет:
'rand' : function does not take 1 parameters
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.
'rand' : function does not take 1 parameters
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.
Теперь компилятор не ругается,но всёравно лажа какаято))
Каждый раз выпадает число 71 (все разы...не меняется блин)
Учитывая что я ставил srand(10) я расчитывал получить чтото в диапазоне 0-9. Чтото я явно нетак делаю )
PS-вопрос конечно наверняка лёгкий и глупый,но я самоучка (пытаюсь точнее),так что сильно не пинайте
Код: Выделить всё
#include <iostream.h>
#include <stdlib.h>
void main()
{
srand(10);
int x=rand();
for (int z = 0; z < 10; z++)
{
cout << x << endl;
}
}
Учитывая что я ставил srand(10) я расчитывал получить чтото в диапазоне 0-9. Чтото я явно нетак делаю )
PS-вопрос конечно наверняка лёгкий и глупый,но я самоучка (пытаюсь точнее),так что сильно не пинайте
"А кто тебе сказал, что оно стихийное? Может, это я, когда кран тебе ставил, то на две крутки его недокрутил и на две винтки недовинтил." ((c) А.И.Райкин)ROBOT_rus писал(а):Теперь компилятор не ругается,но всёравно лажа какаято))
..........
Каждый раз выпадает число 71 (все разы...не меняется блин)
Я в том смысле, что это не "лажа", а "так и должно быть".
1) Непонятен смысл цикла, в котором 10 раз выводится ОДНО И ТО ЖЕ ЧИСЛО. Вызов rand() происходит лишь однажды.
2) Но если бы вызов rand() делался бы несколько раз, то при каждом новом запуске программа выдавала бы ОДИНАКОВУЮ серию (последовательность) чисел. Потому что инициализация генератора псевдостучайных чисел происходила бы каждый раз одним и тем же числом.
И (обратите внимание!) параметр ф-ии srand - это не верхняя граница диапазона возвращаемых чисел, а число-инициализатор последовательности.
Смотрите описание ф-ии srand в MSDN:
http://msdn2.microsoft.com/en-us/library/f0d4wb4t.aspx
Т.е. для получения каждый раз новой последовательности, надо передавать параметром в srand какое-то новое число.
А диапазон возвращаемых чисел ф-ей rand - от 0 до RAND_MAX (32767):
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 ) );
)
Небольшое дополнение сообщения от ВВВ: Для получения числа в заданном диапазоне нужно вспомнить об остатке от деления, который всегда меньше делителя.
Спасибо BBB буду разбираться,незнал что всё так запутано
могу предложить еще такой вариант:
сначала
srand(time(NULL));
потом можно использовать rand()
каждый раз будет генерироватся случайное число
сначала
srand(time(NULL));
потом можно использовать rand()
каждый раз будет генерироватся случайное число