Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> генерация чисел с запятой, как сгенерировать числа с запятой 
V
    Опции темы
Bart_Simpson
Дата 8.3.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 6.3.2007
Где: Днепр Украина

Репутация: нет
Всего: нет



Такой вот вопрос кто знает как мне сгенерировать с помощью rand числа с запятой smile 

Код

//ф-ция заполнения матрицы случайным образом
int Rand_Entr(float mx[100][100],int rows,int colms)
{
  int i,j=0;
  //обработка ошибки размер матрицы не введен
  if ((rows<=0) && (colms<=0)){    
                    cout << "\n\tErorr Size not found!\n";
                    getch();
                    }
  for (i=0;i<rows;i++){
    for (j=0;j<colms;j++){
      mx[i][j]=rand() %50;
  }
  }
  return 0;
}


тут я генерирую целые числа а как с запятой smile 

Это сообщение отредактировал(а) Bart_Simpson - 8.3.2007, 15:24
PM MAIL ICQ   Вверх
jonie
Дата 8.3.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



можно, я пологаю, использовать датчики псевдослучайных чисел....например равномерно-распределенных
Код

double random(){
    static time_t ltime;
    static int b=time(&ltime);        //начальное значение
    int y = b*1220703125;
    if(y<0){
        y+=1073741824;
        y+=1073741824;
    }
    b=y;
    return y*0.4656613E-9;
}

даст ~50 миллионов разных, равномерно-распределенных на интервале [0,1)   псевдослучайных чисел...
ну или, если хочется, чтобы распределение было по некомузакону, например по нормальному , что даст нормально распределенные числа в интервале [Mt - n/2 * Dt, Mt +n/2 * Dt]
где Mt - мат ожидание, Dt - дисперсия, n - количество чисел...
Код

double norm_datchik(int n, double mt, double dt)
{
    double a=0.0;
    for (int j = 0; j < n; j++)        //n генераций равн.распред СВ
        a+=random();
    return mt+(a-n/2)*dt;
}

ну и  вообще почитать теорию чтоли?)....


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Rencom
Дата 8.3.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 27.9.2005

Репутация: нет
Всего: нет



обработка ошибок плохая)

  //обработка ошибки размер матрицы не введен
  if ((rows==0) && (colms==0)){   

числа ведь могут и отрицательные придти)) Думаю, лучше сделать так:

  if ((rows <= 0) && (colms <= 0)){


что касается самого заполнения матрицы... можно, конечно же, сделать по законам распределения случайных величин из теории вероятностей, но можно еще проще, используя математические фукнции типа синуса, косинуса, логарифма.....=) Как-нить типа того: log(sin(random())) =)
PM MAIL   Вверх
Bart_Simpson
Дата 8.3.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 6.3.2007
Где: Днепр Украина

Репутация: нет
Всего: нет



Спасибо 
jonie, вот это мне больше подошло 
Код

 double norm_datchik(int n, double mt, double dt)
{
    double a=0.0;
    for (int j = 0; j < n; j++)        //n генераций равн.распред СВ
        a+=random();
    return mt+(a-n/2)*dt;

}

PM MAIL ICQ   Вверх
Bart_Simpson
Дата 8.3.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 6.3.2007
Где: Днепр Украина

Репутация: нет
Всего: нет



гуд
PM MAIL ICQ   Вверх
GremlinProg
Дата 8.3.2007, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 3
Всего: 106



хм, а чем не нравится обычное деление?
Код

double
    Range      = 100.0,
    RandNum = (Range*rand())/RAND_MAX;

Range - диапазон, в котором нужно число
RandNum - результат

Это сообщение отредактировал(а) GremlinProg - 8.3.2007, 21:45


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GremlinProg
Дата 8.3.2007, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 3
Всего: 106



простое масштабирование )


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0664 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.