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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 853
Записей в блоге: 1
#1

Random for double:( - C++

10.09.2013, 23:27. Просмотров 2237. Ответов 21
Метки нет (Все метки)

Задание: Создать функцию random(a, b), которая возвращает случайное вещественное число от вещественного числа a включительно до вещественного числа b не включительно.

И что такое static_cast<double>?

Похожие задания:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <cstdlib> // для использования генератора случайных чисел
#include <ctime>   // функции времени для инициализации генератора с. ч.
 
using namespace std;
 
int main() {
  srand(unsigned(time(0))); // инициализации генератора с. ч.
 
  // rand() генерирует псевдослучайное целое число от 0 до 
  // константы RAND_MAX, значение которой не меньше, чем 32767
 
  // Случайное целое от 0 до 99
  int n1 = rand() % 100;
  cout << n1 << endl;
 
  // Случайное целое от a=10 до b=99
  const int a = 10;
  const int b = 100;
  int n2 = rand() % (b - a) + a;
  cout << n2 << endl;
 
  // Случайное вещественное от 0 до 1
  double d = static_cast<double>(rand()) / RAND_MAX;
  cout << d << endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2013, 23:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Random for double:( (C++):

Ошибки error C2296: -: недопустимо, левый операнд имеет тип "double (__cdecl *)(double,double,double - C++
Думаю из-за polp #include&lt;iostream&gt; #include&lt;cmath&gt; #include&lt;cstdlib&gt; using namespace std; double polp(double af,double...

Ошибка: error LNK2001: unresolved external symbol "double __cdecl Akk(double,double,double)" - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; double Akk(double x, double y, double z); int main() { int a, b, c; ...

Почему мы пишем double x (double y)? а не через запятую double x,y - C++
почему мы пишем double x (double y)? а не через запятую double x,y

Random и объекты класса (pseudo random) - C++
Всем привет. Есть класс: typedef unsigned int ui; class Player { private: ui health;

Исправить ошибки "cannot convert 'double (*)(double)' to 'double'" и "too many arguments to function" - C++
пожалуйста проверьте и помогите исправить ошибки: #include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;math.h&gt; #include&lt;stdlib.h&gt; ...

Преобразовать 2 числа int в 1 число float(double) | double int1.int2 - C++
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их необходимо преобразовать в одно значение типа...

21
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 867
Регистрация: 27.09.2012
Сообщений: 18,896
Записей в блоге: 3
Завершенные тесты: 1
10.09.2013, 23:28 #2
Цитата Сообщение от DmitryM5 Посмотреть сообщение
И что такое static_cast<double>?
http://www.rsdn.ru/article/cpp/static_cast.xml
1
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 853
Записей в блоге: 1
10.09.2013, 23:30  [ТС] #3
Была такая идея,но ...
double random(double a,double b) {
return static_cast<double>((rand() % (b - a) + a))/RAND_MAX;
}
0
Миниатюры
Random for double:(  
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 867
Регистрация: 27.09.2012
Сообщений: 18,896
Записей в блоге: 3
Завершенные тесты: 1
10.09.2013, 23:34 #4
Применяете остаток от деления к вещественным числам
0
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 853
Записей в блоге: 1
10.09.2013, 23:46  [ТС] #5
Цитата Сообщение от Croessmah Посмотреть сообщение
Применяете остаток от деления к вещественным числам
не понял(

Добавлено через 9 минут
Все время левую границу выдает
C++
1
2
3
double random(double a,double b) {
return static_cast<double>(rand()/RAND_MAX*(b-a)+a);
}
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
11.09.2013, 01:17 #6
Цитата Сообщение от DmitryM5 Посмотреть сообщение
не понял(

Добавлено через 9 минут
Все время левую границу выдает
double random(double a,double b) {
return static_cast<double>(rand()/RAND_MAX*(b-a)+a);
}
Кастить надо перед делением целого числа на целое.
0
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 853
Записей в блоге: 1
11.09.2013, 08:58  [ТС] #7
Цитата Сообщение от Nekto Посмотреть сообщение
Кастить надо перед делением целого числа на целое.
C++
1
2
3
double random(double a,double b) {
return (static_cast<double>(rand()/RAND_MAX))*(b-a)+a;
}
Тоже самое...
0
SatanaXIII
11.09.2013, 09:15
  #8
 Комментарий модератора 
DmitryM5, выделяйте пожалуйста код соответствующими тегами.
0
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 853
Записей в блоге: 1
11.09.2013, 09:19  [ТС] #9
Цитата Сообщение от SatanaXIII Посмотреть сообщение
DmitryM5, выделяйте пожалуйста код соответствующими тегами.
А как это делать?
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,535
Завершенные тесты: 1
11.09.2013, 09:35 #10
DmitryM5, выделяете ваш код и нажимаете на кнопку с соответствующим тегом на панели над окном ввода сообщения.
К примеру, для тега C++:
Random for double:(
1
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
11.09.2013, 10:02 #11
C++
1
2
3
double DRand( double a, double b ) {
   return a + std::fmod( static_cast< double >( std::rand()), b - a );
}
0
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 853
Записей в блоге: 1
11.09.2013, 10:40  [ТС] #12
Цитата Сообщение от Toshkarik Посмотреть сообщение
C++
1
2
3
double DRand( double a, double b ) {
   return a + std::fmod( static_cast< double >( std::rand()), b - a );
}
Спасибо,поясни что такое fmod и куда пропал randmax?
И почему мой кол не работал,вроде правилен.
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
11.09.2013, 10:45 #13
Операция % - это взятие остатка от деления для целых чисел. Для чисел с плавающей точкой для этого есть специальная функция fmod, которая принимает в качестве параметров делимое и делитель, и возвращает остаток от деления. Собственно а зачем здесь RAND_MAX?
1
Петррр
5965 / 3402 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
11.09.2013, 10:51 #14
Оно?
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
11.09.2013, 12:27 #15
Цитата Сообщение от Toshkarik Посмотреть сообщение
Операция % - это взятие остатка от деления для целых чисел. Для чисел с плавающей точкой для этого есть специальная функция fmod, которая принимает в качестве параметров делимое и делитель, и возвращает остаток от деления. Собственно а зачем здесь RAND_MAX?
Если b-a имеет только целую часть, то по твоей формуле по идее окончательный ответ тоже будет иметь только целую часть+дробную от а.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// drand.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <cstdlib>
#include <cmath>
#include <iostream>
 
double DRand2 (double a, double b) {
  return a+static_cast<double>(std::rand())/RAND_MAX*(b-a);
  }
 
double DRand( double a, double b ) {
   return a + std::fmod( static_cast< double >( std::rand()), b - a );
}
 
int _tmain(int argc, _TCHAR* argv[])
{
  for (double a=0, b=1;a<20;++a,b+=2)
    std::cout<<a<<" "<<b<<" Rand: "<<DRand(a,b)<<" Rand2: "<<DRand2(a,b)<<std::endl;
    return 0;
}
Код
0 1 Rand: 0 Rand2: 0.00125126
1 3 Rand: 1 Rand2: 1.38661
2 5 Rand: 3 Rand2: 3.75503
3 7 Rand: 5 Rand2: 4.40117
4 9 Rand: 8 Rand2: 8.1142
5 11 Rand: 10 Rand2: 6.04465
6 13 Rand: 12 Rand2: 10.9735
7 15 Rand: 10 Rand2: 9.43196
8 17 Rand: 16 Rand2: 8.82263
9 19 Rand: 15 Rand2: 10.4731
10 21 Rand: 17 Rand2: 20.8738
11 23 Rand: 20 Rand2: 12.429
12 25 Rand: 18 Rand2: 12.1158
13 27 Rand: 25 Rand2: 20.4433
14 29 Rand: 19 Rand2: 23.0265
15 31 Rand: 29 Rand2: 17.6597
16 33 Rand: 28 Rand2: 23.6634
17 35 Rand: 21 Rand2: 18.0267
18 37 Rand: 21 Rand2: 32.8831
19 39 Rand: 33 Rand2: 29.3977
Press any key to continue . . .
0
11.09.2013, 12:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2013, 12:27
Привет! Вот еще темы с ответами:

Почему перестает работать программа при замене double на long double? - C++
Здравствуйте! Прошу помощи чтобы разобраться в следующем вопросе: Нашел программу в интернете, запустил - все работает, но когда решил...

Какая-нибудь реализация функции void Fun (double in, double *out) - C++
Подскажите, пожалуйста, какую-нибудь любую реализацию прототипа функции: void Fun (double in, double *out)

long double и double в MSVC 12 одно и тоже, нужна информация,желательно быстрей - C++
Здравствуйте все знают что в VC long double и double одно и тоже, да и при простой проверке это легко выясняется, но нужна информация от...

Вывести long double число без перевода в double - C++
Надо вывести long double число без перевода в double. Пишу: printf(&quot;%Lf&quot;,S); и выводится неверно. Компилятор -- MinGW, та же фишка на...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru