Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рендум чисел 
:(
    Опции темы
nepster
Дата 12.9.2009, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



Код


void main() 
{
srand (unsigned(time(NULL)));
int i;
i=rand()% 20+1;

cout<<i;


}



Вот идет генератор случайного числа от 1 до 20, подскажите плз как сделать, так что бы рендум не повторялся.  Тоесть выводились случайные числа от 1 до 20 не повторяясь? 
PM MAIL   Вверх
bsa
Дата 12.9.2009, 23:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



nepster, сделай массив из 20-ти последовательных элементов (1..20), затем воспользуйся стандартным алгоритмом std::random_shuffle. В результате у тебя получится массив случайных чисел от 1 до 20 включительно без повторений.
PM   Вверх
nepster
Дата 13.9.2009, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



я так и сделал,  у меня:

Код

char** a=new char* [20];
for (int i=0; i<20; i++)
{a[i]=new char[255];}

a[1]="222";
a[2]="111.";
и тд.



Но честно говоря не чего не понял, как там делается. 


PM MAIL   Вверх
bsa
Дата 13.9.2009, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Код
#include <vector>
#include <algorithm>
#include <iostream>
#include <iterator>
#include <ctime>
#include <cstdlib>

int main()
{
   std::srand(std::time(0));
   std::vector<int> array(20);
   for(int i = 0, s = array.size(); i < s; ++i)
       array[i] = i + 1;
   std::random_shuffle(array.begin(), array.end());
   std::copy(array.begin(), array.end(), std::ostream_iterator<int>(std::cout, ", "));
   std::cout << std::endl;
   return 0;
}
Выводит на экран числа от 1 до 20 в случайном порядке.
PM   Вверх
nepster
Дата 13.9.2009, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 26.4.2009

Репутация: нет
Всего: нет





а как сделать что бы 1 число рендумно заносилось в переменную например в i.

Код

void main() 
{
srand (unsigned(time(NULL)));
int i;
i=rand()% 20+1;
cout<<i;
}



типа как тут, только проверка на повторяемость переменной 
PM MAIL   Вверх
bsa
Дата 13.9.2009, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



nepster, очень просто. делаешь как я сказал, затем берешь последовательно элементы массива и заносишь в переменную, а не копируешь на стандартный вывод, как в примере.
PM   Вверх
nepster
Дата 13.9.2009, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



ок спс, буду разбираться 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.