Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Как правильно задать диапазон генерации случайных чисел (http://forum.oszone.net/showthread.php?t=179739)

perfomanse 03-07-2010 13:38 1446502

Как правильно задать диапазон генерации случайных чисел
 
Подскажите пожалуйста как из массива 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 1446541

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

lxa85 03-07-2010 14:54 1446554

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

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

AlexTNT 03-07-2010 19:01 1446659

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

perfomanse 03-07-2010 19:06 1446662

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

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

Drongo 03-07-2010 20:21 1446707

Цитата:

Цитата 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();
}
//---------------------------------------------------------------------------


crashtuak 03-07-2010 22:10 1446757

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


Время: 13:22.

Время: 13:22.
© OSzone.net 2001-