Показать полную графическую версию : Как правильно задать диапазон генерации случайных чисел
perfomanse
03-07-2010, 13:38
Подскажите пожалуйста как из массива e[6]={0.7,1,1.2,1.6,2.1,2.2} с помощью функции rand() выбрать случайно только одно значение?
пробовала вот так:
E1=rand()%e[6]; а оно пишет: Illegal use of floating point.
что делать, подскажите!!!!!!! Очень срочно надо!!!
crashtuak
03-07-2010, 14:37
perfomanse, не знаю, насколько корректным будет мое решение, но все же:выбрать случайно число от 0 к 5(индексы элементов массива), и по индексу получить сам элемент.
perfomanse, функция rand(100) дает случайные значения от 0 до 99.
Т.о. для получения значения от 1 до 6 надо писать rand()%6+1
E1=e[rand()%6+1]
P.S. работоспособность не проверял.
Есть функция int random(int n), которая возвращает псевдослучайное число большее или равное 0 и меньшее или равное n-1 (имеется не во всех реализациях)
E1=e[random(6)];
perfomanse
03-07-2010, 19:06
спасибо! сейчас попробую)
Declaration terminated incorrectly во всех двух случаях!
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();
}
//---------------------------------------------------------------------------
crashtuak
03-07-2010, 22:10
perfomanse, пример Drongo работает без проблем. Declaration terminated incorrectly-возможно вы неправильно что нибудь объявляете? Кусок кода был бы не лишним.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.