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

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

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

Random for double:( - C++

10.09.2013, 23:27. Просмотров 2113. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2013, 23:27     Random for double:(
Посмотрите здесь:

C2440 "Невозможно преобразовать double в double" - C++
// ConsoleApplication3.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

typedef double (*d)(double); - C++
//--------------------------------------------------------------------------- #include &quot;math.h&quot; #include &lt;stdio.h&gt; #include...

Перевод double to double - C++
Всем привет! проблема такая : Есть вектор типа double. Из него надо считать число в переменную, которая тоже имеет тип double. Считываю...

Ошибка "Невозможно преобразовать аргумент 1 из "double" в "double *" - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; double f(double *a, double x) { double k = 0; int n; for (int i = 0;...

random - C++
R=random(101)/100.; Это генератор случайных чисел (0;1)?

random - C++
Нужно сгенерировать случайное число двух значное как это сделать ? Visual C++ Гуглил но только это . #include &lt;iostream&gt; using...

Random - C++
для чего пишем srand(time(0)); ? srand(time(0)); int a = rand() % N;

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

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

Добавлено через 9 минут
Все время левую границу выдает
double random(double a,double b) {
return static_cast<double>(rand()/RAND_MAX*(b-a)+a);
}
Кастить надо перед делением целого числа на целое.
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 822
Записей в блоге: 1
11.09.2013, 08:58  [ТС]     Random for double:( #7
Цитата Сообщение от Nekto Посмотреть сообщение
Кастить надо перед делением целого числа на целое.
C++
1
2
3
double random(double a,double b) {
return (static_cast<double>(rand()/RAND_MAX))*(b-a)+a;
}
Тоже самое...
SatanaXIII
11.09.2013, 09:15
  #8
 Комментарий модератора 
DmitryM5, выделяйте пожалуйста код соответствующими тегами.
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 822
Записей в блоге: 1
11.09.2013, 09:19  [ТС]     Random for double:( #9
Цитата Сообщение от SatanaXIII Посмотреть сообщение
DmitryM5, выделяйте пожалуйста код соответствующими тегами.
А как это делать?
SatanaXIII
Супер-модератор
Эксперт С++
5605 / 2639 / 242
Регистрация: 01.11.2011
Сообщений: 6,499
Завершенные тесты: 1
11.09.2013, 09:35     Random for double:( #10
DmitryM5, выделяете ваш код и нажимаете на кнопку с соответствующим тегом на панели над окном ввода сообщения.
К примеру, для тега C++:
Random for double:(
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
11.09.2013, 10:02     Random for double:( #11
C++
1
2
3
double DRand( double a, double b ) {
   return a + std::fmod( static_cast< double >( std::rand()), b - a );
}
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 822
Записей в блоге: 1
11.09.2013, 10:40  [ТС]     Random for double:( #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?
И почему мой кол не работал,вроде правилен.
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
11.09.2013, 10:45     Random for double:( #13
Операция % - это взятие остатка от деления для целых чисел. Для чисел с плавающей точкой для этого есть специальная функция fmod, которая принимает в качестве параметров делимое и делитель, и возвращает остаток от деления. Собственно а зачем здесь RAND_MAX?
Петррр
5948 / 3385 / 336
Регистрация: 28.10.2010
Сообщений: 5,927
11.09.2013, 10:51     Random for double:( #14
Оно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2013, 12:27     Random for double:(
Еще ссылки по теме:

Random - C++
Помогите,пожалуйста, подкорректировать текст проги так,что был массив задавался рандомно,а не вводился как у меня вручную. #include...

random - C++
Доброго времени суток! Вопрос прост: для генерации случайных чисел всегда пользовался rand(), но тут что то вдруг добрался до random(), но...

Random - C++
Всем привет! Столкнулся с проблемой: по программе должен нажать S, и после этого из списка 1.cpp ... 50.cpp должен выбраться один...

Работа с random - C++
Доброго времени суток! У меня есть массив int a={10,20,30,40,50}. Можно сделать так, чтобы выводились эти числа рандомом и не...

RANDOM в циклах - C++
Вот программка выдающая 10 клонов случайного числа от 0 до 9, что в ней надо изменить, чтобы все числа были рандомные, то есть разные?...


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

Или воспользуйтесь поиском по форуму:
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
11.09.2013, 12:27     Random for double:( #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 . . .
Yandex
Объявления
11.09.2013, 12:27     Random for double:(
Ответ Создать тему
Опции темы

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