Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Как правильно задать диапазон генерации случайных чисел

Ответить
Настройки темы
C/C++ - Как правильно задать диапазон генерации случайных чисел

Аватара для perfomanse

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите пожалуйста как из массива e[6]={0.7,1,1.2,1.6,2.1,2.2} с помощью функции rand() выбрать случайно только одно значение?
пробовала вот так:
E1=rand()%e[6]; а оно пишет: Illegal use of floating point.
что делать, подскажите!!!!!!! Очень срочно надо!!!

Отправлено: 13:38, 03-07-2010

 

Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


perfomanse, не знаю, насколько корректным будет мое решение, но все же:выбрать случайно число от 0 к 5(индексы элементов массива), и по индексу получить сам элемент.

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:37, 03-07-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


perfomanse, функция rand(100) дает случайные значения от 0 до 99.
Т.о. для получения значения от 1 до 6 надо писать rand()%6+1
E1=e[rand()%6+1]

P.S. работоспособность не проверял.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:54, 03-07-2010 | #3


Аватара для AlexTNT

Пользователь


Сообщения: 99
Благодарности: 19

Профиль | Отправить PM | Цитировать


Есть функция int random(int n), которая возвращает псевдослучайное число большее или равное 0 и меньшее или равное n-1 (имеется не во всех реализациях)
E1=e[random(6)];

-------
В споре рождается истина.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:01, 03-07-2010 | #4


Аватара для perfomanse

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


спасибо! сейчас попробую)

Declaration terminated incorrectly во всех двух случаях!

Отправлено: 19:06, 03-07-2010 | #5


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата perfomanse:
E1=rand()%e[6]; а оно пишет: Illegal use of floating point. »
Диапазон задан не верно, не массив с идексом задаёт диапазон, а индекс.

Код: Выделить весь код
#include <iostream.h>
#include <ctime>
#include <conio.h>

void main()
{
   float e[6] = {0.7, 1, 1.2, 1.6, 2.1, 2.2};
   srand(time(0));
   int E1 = rand() % 5;
   cout<<"Random e["<<E1<<"] = "<<e[E1]<<endl<<endl;

   for(int i = 0; i < 6; i++)
      cout<<"array["<<i<<"] = "<<e[i]<<endl;
  
   getch();
}
//---------------------------------------------------------------------------

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Последний раз редактировалось Drongo, 03-07-2010 в 22:14. Причина: Исправлен выход за диапазон границы массива...

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:21, 03-07-2010 | #6


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


perfomanse, пример Drongo работает без проблем. Declaration terminated incorrectly-возможно вы неправильно что нибудь объявляете? Кусок кода был бы не лишним.

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 22:10, 03-07-2010 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Как правильно задать диапазон генерации случайных чисел

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - как определить какой диапазон ip в сети ? mitiya Сетевые технологии 5 16-12-2009 20:04
C/C++ - Как правильно задать тип данных в массиве ShadowMas Программирование и базы данных 4 18-04-2009 22:26
Как увеличить диапазон адресов в DHCP? Levin Microsoft Windows NT/2000/2003 2 21-10-2008 15:35
Генератор случайных чисел Murrey Хочу все знать 3 22-08-2006 13:00
Как изменить диапазон частот FM приёмника сот. телефона K750i ? Zhenia Мобильные ОС, смартфоны и планшеты 3 10-08-2006 12:36




 
Переход