Форум программистов, компьютерный форум CyberForum.ru

Функция rand() - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.77
vasja_pupkin
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 6
03.11.2011, 13:48     Функция rand() #1
Добрый день.
Написал следующую функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <stdlib.h>
using namespace std;
int main (int argc, char*argv[])
{
int x = 0, count = 0;
while (count != 10)
{
x = 0 + rand() % 10;
cout <<x<<"\n";
count++;
}
}
В принципе всё отлично, всё устраивает, но есть одно но, мне нужен диапазон чисел от 0,01 до 0,99, если я меняю тип int x = 0 на double x = 0 и в строке x = 0 + rand() % 10; пишу x = 0,01 + rand() % 1,00; - компилятор мне отвечает, что справа находится тип double и, соответственно, аварийный останов.
Скажите пожалуйста, что мне исправить чтобы я мог использовать этот x = 0,01 + rand() % 1,00; диапазон?
Спасибо.
P.S.: А если я пишу x = 0,01 + rand() % 1;, то компилятор не ругается, но выводит 10-ть раз 0,01.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2011, 13:48     Функция rand()
Посмотрите здесь:

C++ Функция rand();
C++ функция rand()
Функция rand() C++
C++ функция rand()
Функция rand() C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mihai
7 / 7 / 0
Регистрация: 19.12.2010
Сообщений: 26
03.11.2011, 13:54     Функция rand() #2
rand() выводит только целые числа.
можете сделать так
C++
1
2
double x = 1 + rand() % 99;
x = x/100;
vasja_pupkin
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 6
03.11.2011, 14:02  [ТС]     Функция rand() #3
Спасибо работает, но выводит всегда 10-ть одинаковых последовательностей.
0,42; 0,44; 0,63; 0,41; 0,6; 0,45; 0,13; 0,57; 0,13; 0,63.
Почему так?
Mihai
7 / 7 / 0
Регистрация: 19.12.2010
Сообщений: 26
03.11.2011, 14:13     Функция rand() #4
так и должно быть. если вы хотите чтобы случайные числа отличались при каждом запуске программы нужен srand(), где-нибудь вначале программы.

например так:
C++
1
srand ( time(NULL) );
вы можете передать любое беззнаковое целое. обычно используют время с начала запуска программы.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
03.11.2011, 14:16     Функция rand() #5
Цитата Сообщение от Mihai Посмотреть сообщение
обычно используют время с начала запуска программы.
time возвращает не время с начала запуска программы, а время с начала Эпохи
Mihai
7 / 7 / 0
Регистрация: 19.12.2010
Сообщений: 26
03.11.2011, 14:29     Функция rand() #6
Цитата Сообщение от Nameless One Посмотреть сообщение
time возвращает не время с начала запуска программы, а время с начала Эпохи
поправка принимается. time(NULL) вернёт количество секунд прошедших с 1 января, 1970.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
03.11.2011, 15:47     Функция rand() #7
Дело не в том, что rand() развращает целое число, а в том, что операция % работает только для целых чисел.
Mihai
7 / 7 / 0
Регистрация: 19.12.2010
Сообщений: 26
03.11.2011, 15:58     Функция rand() #8
я привёл правильный код.

Не по теме:

не придирайтесь к словам

Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
03.11.2011, 16:03     Функция rand() #9
Цитата Сообщение от Mihai Посмотреть сообщение
не придирайтесь к словам
Если не придираться, то ТС не правильно поймет, почему у него не работала программа.
vasja_pupkin
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 6
03.11.2011, 17:17  [ТС]     Функция rand() #10
Попробовал использовать
C++
1
srand ( time(NULL) );
Пишет "time: идентификатор не найден".
Да, и кто такой ТС?
ExcellencE
20 / 20 / 2
Регистрация: 22.08.2011
Сообщений: 79
03.11.2011, 17:22     Функция rand() #11
Цитата Сообщение от vasja_pupkin Посмотреть сообщение
Попробовал использовать
C++
1
srand ( time(NULL) );
Пишет "time: идентификатор не найден".
C++
1
#include <time.h>
Vidok
 Аватар для Vidok
36 / 36 / 2
Регистрация: 03.09.2011
Сообщений: 279
03.11.2011, 17:24     Функция rand() #12
подключите #include <time.h>

не успел)
vasja_pupkin
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 6
03.11.2011, 17:28  [ТС]     Функция rand() #13
Извините, вопрос, про идентификатор снимаю, разобрался, библиотеку забыл подключить, но про ТС хотелось бы всё таки выяснить.
Спасибо всем)
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
03.11.2011, 17:49     Функция rand() #14
ТС = ТопикСтартер
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2011, 17:52     Функция rand()
Еще ссылки по теме:

Функция rand() C++
C++ Функция rand
C++ Функция - rand

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
03.11.2011, 17:52     Функция rand() #15
Цитата Сообщение от vasja_pupkin Посмотреть сообщение
Пишет "time: идентификатор не найден".
#include <ctime>
Yandex
Объявления
03.11.2011, 17:52     Функция rand()
Ответ Создать тему
Опции темы

Текущее время: 03:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru