Моё меню Общее меню Пользователи Правила форума Все прочитано
Вернуться   uForum.uz > ИКТ и телеком > IT-индустрия > Софт > Программирование > C/C++, Прикладные вопросы
Регистрация
Знаете ли Вы, что ...
...инструкция по установке аватара описана в Правилах форума.
<< Предыдущий совет - Случайный совет - Следующий совет >>

C/C++, Прикладные вопросы Программирование на C++. No VCL, no MFC, pure C++ only. Прикладные библиотеки и компоненты для C или C++ и тому подобные вопросы.


Ответить

 
Опции темы Опции просмотра
Старый 06.06.2008 13:41   #1  
Аватар для blasterjon
Оффлайн
Admin
Admin
Сообщений: 8
+ 1  0/0
– 0  0/0

Uzbekistan
Exclamation 256 элементов с помощью функции rand()

как можно генерироват массива состоящих из 256 элементов с помощью функции rand(). Один число из диапозона 0--256 повторялся один раз. Исходники можно оставит здесь.
Ответить 
Старый 06.06.2008 13:59   #2  
Known ID Group uParty Member Ultimate
Аватар для JH
Оффлайн
Сообщений: 10,853
+ 3,657  10,903/4,657
– 584  284/212

Uzbekistan
Заполнить массив числами от 0 до 255. Потом сделать 128 случайных перестановок.
Ответить 
Старый 06.06.2008 14:03   #3  
Known ID Group uParty Member Ultimate
Аватар для JH
Оффлайн
Сообщений: 10,853
+ 3,657  10,903/4,657
– 584  284/212

Uzbekistan
Цитата:
Сообщение от Jahongir Haitov Посмотреть сообщение
Заполнить массив числами от 0 до 255. Потом сделать 128 случайных перестановок.
Это даст довольно хорошо рассортированный список. Если хотите гарантированно перетасовать все числа, то делайте 255 перестановок, насильно меняя каждый элемент массива местами с любым из последующих.
Ответить 
Старый 14.01.2009 05:48   #4  
Аватар для vcoder
Оффлайн
RedOxygen
Ведущий программист
Сообщений: 41
+ 1  6/5
– 0  1/1

Australia
Цитата:
Сообщение от Jahongir Haitov Посмотреть сообщение
Заполнить массив числами от 0 до 255. Потом сделать 128 случайных перестановок.
Респект - совершенно верный ответ!

Господа, читайте классику программирования!
Этот алгоритм (как и множество других) есть в книге Д. Кнута "Искусство программирования"
__________________
С уважением, Дмитрий
Ответить 
Старый 14.01.2009 12:14   #5  
Real ID Group
Аватар для Aziz Madetov
Оффлайн
Сообщений: 1,504
+ 3,004  1,175/528
– 55  21/17

Uzbekistan
Цитата:
Сообщение от Jahongir Haitov Посмотреть сообщение
Это даст довольно хорошо рассортированный список. Если хотите гарантированно перетасовать все числа, то делайте 255 перестановок, насильно меняя каждый элемент массива местами с любым из последующих.
В таком случае, должно быть 254 перестановки, потому что элемент, меняющий позицию, не учитывается.
Ой, сорри, ошибся. Все верно! Должно быть 255 перестановок
Ответить 
Старый 14.01.2009 12:36   #6  
Аватар для _TrachinuS_
Оффлайн
DataMicron Inc.
Manager-Programmer
Сообщений: 134
+ 17  12/11
– 0  0/0

MalaysiaМой мир
Мдяя книжка Д. Кнута "Искусство программирования" это тру!
__________________
Те, кому нечего сказать, обычно говорят вдвое больше.
Ответить 
Старый 19.03.2009 15:07   #7  
Аватар для dovdir
Оффлайн
Сообщений: 5
+ 3  1/1
– 1  0/0

Uzbekistan
primerno tak budet
Код:
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main(void) {

        int len=256;
        int buf_num;
        int *a=new int[len];
        int is=0;
        int ecx=0;

        srand(time(NULL));
        for(int i=0;;i++){
                if(ecx==len)
                        break;
                buf_num=rand()%256+1;
                for(int j=0;j<ecx;j++) {
                        if(a[j]==buf_num) {
                                is=1;
                                break;
                        }
                        is=0;
                }

                if(!is) {
                        a[ecx]=buf_num;
                        ecx++;
                        is=0;
                }
        }

        for(int i=0;i<len;i++)
                cout<<i<<" -> "<<a[i]<<endl;
    return 0;
}

Последний раз редактировалось dovdir; 19.03.2009 в 15:25.
Ответить 
Реклама и уведомления
Ответить
Опции темы
Опции просмотра




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Advertisement System V2.5 By Branden
OOO «Единый интегратор UZINFOCOM»


Новые 24 часа Кто на форуме Новички Поиск Кабинет Все прочитано Вверх