Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2012, 15:09   #1
Evielle
Пользователь
 
Регистрация: 23.04.2012
Сообщений: 22
По умолчанию Рандомайзер для float в диапазоне [a,b] с точностью до десятых

Всем доброго времени суток!

Как же будет выглядеть такое чудо, есть идеи?
Evielle вне форума Ответить с цитированием
Старый 21.05.2012, 15:10   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Evielle
срандомить целое, поделить на 10
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 21.05.2012, 15:41   #3
Evielle
Пользователь
 
Регистрация: 23.04.2012
Сообщений: 22
По умолчанию

Код:
#include <iostream>
#include <conio.h>
#include <stdlib.h>

using namespace std;
main()
{
      int xmin, xmax;
      float x;
      cout<<"xmin="; cin>>xmin;
      cout<<"xmax="; cin>>xmax;
      x=(rand()%(xmax-xmin)+xmin)/10;
      cout<<x;
getch();
}
Не подает надежд..

А если работать напрямую с float? Чтобы все переменные были сразу такого типа.
Evielle вне форума Ответить с цитированием
Старый 21.05.2012, 15:57   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы делите на 10.0 для С это разные числа.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.05.2012, 15:59   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Evielle
Код:
	srand(time(0));
	int xmin = 1, xmax = 5;
	double x = (rand() % (xmax*10 - (xmin+10)) + xmin+10) / 10.0;
	cout << x << endl;
можно еще проще
Код:
	srand(time(0));
	int xmin = 1, xmax = 5;
	double x = (rand() % (xmax - xmin) + xmin) + (rand() % 10) / 10.0;
	cout << x << endl;;
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 21.05.2012, 16:16   #6
Evielle
Пользователь
 
Регистрация: 23.04.2012
Сообщений: 22
По умолчанию

Да, извиняйте за глупость с типами на 10.0.
А если с клавиатуры вводить значения типа float, то тогда такой способ не подойдет из-за '%'. Как быть?

И спасибо за srand(time(0)), упустил это дело.
Evielle вне форума Ответить с цитированием
Старый 21.05.2012, 16:20   #7
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Evielle
Цитата:
А если с клавиатуры вводить значения типа float, то тогда такой способ не подойдет из-за '%'. Как быть?
вводишь float, умножаешь границы на 10, находишь случайное число, делишь на 10. проблем?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 21.05.2012, 16:30   #8
Evielle
Пользователь
 
Регистрация: 23.04.2012
Сообщений: 22
По умолчанию

Код:
#include <iostream>
#include <conio.h>
#include <stdlib.h>

using namespace std;
main()
{
      srand(time(0));
      float xmin, xmax;
      float x;
      cout<<"xmin="; cin>>xmin;
      cout<<"xmax="; cin>>xmax;
      x=(rand()*(xmax*10-xmin*10)+xmin*10)/100.0;
      cout<<x;
getch();
}
Проблем, ага. Даже стыдно код приводить

Последний раз редактировалось Evielle; 21.05.2012 в 16:32.
Evielle вне форума Ответить с цитированием
Старый 21.05.2012, 16:48   #9
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Evielle
Цитата:
Проблем, ага. Даже стыдно код приводит
потому что хочешь, чтобы за тебя написали

Код:
int random(int xmin, int xmax)
{ return rand() % (xmax - xmin + 1) + xmin; }

double random(double xmin, double xmax)
{ return random(static_cast<int>(xmin * 10), static_cast<int>(xmax * 10)) / 10.0; }

int main()
{
	srand(time(0));
	cout << random(0.4, 3.2) << endl;
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 21.05.2012, 17:00   #10
Evielle
Пользователь
 
Регистрация: 23.04.2012
Сообщений: 22
По умолчанию

Спасибо, работает как часы!
Тоже верно. Скилл около плинтуса пока.
Evielle вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рандомайзер для float, C++ Evielle Помощь студентам 0 20.05.2012 21:57
Конвертация single float в double float kypck Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 23.04.2012 00:22
Worksheet_Change для диапазона в диапазоне) mephist Microsoft Office Excel 11 29.09.2011 16:46
Ошибка типа cannot convert `float*' to `float' for argument `1' ... Trackman Помощь студентам 3 23.05.2011 17:09
C++ Округление до десятых Aleskandr Помощь студентам 5 06.03.2011 15:16