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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2010, 00:51   #1
Kotjona
 
Регистрация: 23.02.2009
Сообщений: 4
Вопрос Генератор ВЕЩЕСТВЕННЫХ чисел в С++

Люди, помогите, не знаю в чем проблема!!!
Я знаю, что надо писать rand(); но генерируются почему-то целые числа и довольно большие.
Подключаю #include <ctime> и srand(time(0)); хотя это ведь и не важно. У меня и одно число вещественное не генерируется
Везде читаю, что так и надо, как я делаю, но почему у меня не получается? Что я делаю не так? Подскажите, пожалуйста.
Kotjona вне форума Ответить с цитированием
Старый 07.05.2010, 09:52   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

приведу код на С
Код:
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#define Left 1
#define Right 15
#define N 10

int main (void) {
float R, r, min;
float A[N];

int i, j, k;	
unsigned int some;
long int L;

L = (long) time(NULL); // Системное время
some = (unsigned) L; // Приведение типов
srand(some); // Задание исходного случайного числа для rand()
printf("\n\t The initial array of random numbers in the interval [%d, %2d]\n", Left, Right);

for (i = 0; i < N; ++i)
{// Случайное число из интервала [0,1]
r = (float) rand()/RAND_MAX;
// Формирование случайного числа из заданного интервала
R = Left + (Right - Left) * r;
// Заполнение массива случайными числами
A[i] = R; }
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 07.05.2010, 10:14   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Одна маленькая придирка . Числа генерируются в момент
Код:
float R, r, min;
float A[N];
В остальное время генерируются значения этих чисел.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 07.05.2010, 10:24   #4
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

это кусок кода из лабы за первый курс по С-программированию
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 08.05.2010, 00:24   #5
Kotjona
 
Регистрация: 23.02.2009
Сообщений: 4
По умолчанию

Не знаю почему, но у меня все еще не получается.
Без строки
R = Left + (Right - Left) * r;
генерируются все нули. Хотя я так понимаю, что уже должны быть числа из диапазона 0..1. С этой строкой получаются целые числа из нужного диапазона. Вещественные никак не хотят генерироваться
В книге читала, что rand () генерирует вещественные числа из диапазона 0..1, как и random () в Паскале. Значит по-идее
float a[10];
for (int i=0; i<10; i++)
a[i]=rand()%10+rand();
должно давать вещественные числа 0..10.
А у меня выдает 28180, 24660, и т.д.
Kotjona вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генератор случайных ВЕЩЕСТВЕННЫХ чисел (Паскаль) igor_564 Помощь студентам 12 19.11.2010 01:24
Дан файл вещественных чисел. xilnurx Помощь студентам 0 13.03.2010 12:43
Файл вещественных чисел. toybike Общие вопросы C/C++ 8 10.12.2009 20:02
Списки вещественных чисел. в С++ KRT Помощь студентам 2 23.07.2009 13:06
Файл вещественных чисел bullvinkle Общие вопросы C/C++ 1 18.06.2009 01:31