PDA

Показать полную графическую версию : Как правильно задать диапазон генерации случайных чисел


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(индексы элементов массива), и по индексу получить сам элемент.

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

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

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

perfomanse
03-07-2010, 19:06
спасибо! сейчас попробую)

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

Drongo
03-07-2010, 20:21
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