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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> rand(), C++ 
:(
    Опции темы
ДобренькийПапаша
Дата 29.4.2006, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Итак, как сделать так, чтобы рандились, либо -1, либо -2, либо 1, либо 2. Функция вызывается рекурсивно, надо, чтобы постоянно рандилось в разной последовательности. 


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
BreakPointMAN
Дата 29.4.2006, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В чем проблема? 


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
ДобренькийПапаша
Дата 29.4.2006, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Надо запрограммировать смещение коня в шахматах. Для этого мне надо чтобы рандились эти четыре числа.  


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
BreakPointMAN
Дата 29.4.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну и? что не получается-то? как функция rand() работает, ты знаешь? 


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Kuber
Дата 29.4.2006, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 7.4.2006
Где: #vingrad

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



Цитата(ДобренькийПапаша @ 29.4.2006,  19:38)
Итак, как сделать так, чтобы рандились, либо -1, либо -2, либо 1, либо 2. Функция вызывается рекурсивно, надо, чтобы постоянно рандилось в разной последовательности.

Код

switch(rand()%3)
        {
        case 0:
            Tmp=-1;
            break;
        case 1:
            Tmp=-2;
            break;
        case 2:
            Tmp=1;
            break;
        case 3:
            Tmp=2;
            break;
        }


Попробуй так... 
--------------------
Если меня угораздило написать что то умное и вам понравилось, то не забудте нажать [-]...:)    
PM ICQ   Вверх
BreakPointMAN
Дата 29.4.2006, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Kuber, Бог ты мой! А еще подлиннее нельзя было?!??!?!?  smile  smile  


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
ДобренькийПапаша
Дата 29.4.2006, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Рандит только 0. Прога конечно в разработке)))). Тут много неправильно пока что.

Код

#include <iostream.h>
#include <math.h>
#include <stdlib.h>

void knight(int i, int j, int n, bool a[8][8])
{
    
    for(;;)
    {
        switch(rand()%3)
        {
            
        case 0:
            n=-1;
            break;
        case 1:
            n=-2;
            break;
        case 2:
            n=1;
            break;
        case 3:
            n=2;
            break;
        }
        n=rand()%3;
        if(n=1) i++;
        if(n=1) j+2; 
        if(n=1) a[i+1][j+2]=false;
        if(n=1 && a[i+1][j+2]) knight(i,j,n,a); 
        cout<<n<<endl;
        if(n=2) i+2;
        if(n=2) j++;
        if(n=2) a[i+2][j+1]=false;
        if(n=2 && a[i+2][j+1]) knight(i,j,n,a);
        cout<<n<<endl;
    }
    

}
void main()
{
    int i=0, j=0, n;
    bool a[8][8];
    knight(i,j,n,a);
}
 


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
BreakPointMAN
Дата 29.4.2006, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

n=(n=rand()%4)>1?n-1:n-2;

Вот и всё.

Код

        case 3:
            n=2;
            break;
        }
        n=rand()%3; // затираешь новым значением нужное значение n
        if(n=1) i++;
 


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Step
Дата 29.4.2006, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



Цитата

Бог ты мой! А еще подлиннее нельзя было?!??!?!?       

если вы в таком тоне притендуете на краткость и оптимальность своего кода
Код

n=(n=rand()%4)>1?n-1:n-2;

то вынужден вас расстроить это не самое идеально решение


ЗЫ: это что бы вам предупреждения не влиплять 


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
BreakPointMAN
Дата 29.4.2006, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Step @  29.4.2006,  21:00 Найти цитируемый пост)
то вынужден вас расстроить это не самое идеально решение

Ну, я не утверждал, что мое решение "самое идеально"...  smile Если вы знаете решение более "идеально", просветите нас, неразумных!  smile  Всегда приятно посмотреть на более красивый и короткий код, чем написанный собой. 


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
BreakPointMAN
Дата 29.4.2006, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Можно так еще... равновероятность повыше будет:
Код

n=(n=(rand() /((RAND_MAX+1)/4) ))-1-1*(n<=1);
  

Это сообщение отредактировал(а) BreakPointMAN - 29.4.2006, 22:01


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Void
Дата 29.4.2006, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



BreakPointMAN, во-первых, UB smile Двойное изменение n между точками следования.
Во-вторых, для въезжания в этот код требуется (ну по крайней мере мне) секунд 10–15. Write-only, одним словом. Хотя, если сопроводить комментарием…

Я бы, пожалуй, написал так, не претендуя ни на краткость, ни на производительность, но, надеюсь, на очевидность производимых действий:
Код
int n;
{
    static const int cases[] = {-2, -1, 1, 2};
    n = cases[4 * rand() / (RAND_MAX + 1)];
}
 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
BreakPointMAN
Дата 29.4.2006, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Void @  29.4.2006,  22:35 Найти цитируемый пост)
Двойное изменение n между точками следования.

Не-а...  smile или, быть может, я не вижу... Где?

В остальном согласен. 


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Void
Дата 29.4.2006, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Код
(n=(rand() /((RAND_MAX+1)/4) ))

Раз assignment.
Код
n=(/***/)-1-1*(n<=1);

Два assignment.

Ы? smile 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
nikitao
Дата 29.4.2006, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Господа,вы в своих спорах завязли,а человек ответа на свою проблему не получил smile 
Вообще полностью согласен с Void.С++сты часто с убийственным рвением укарачивают,сжымают код(благо язык очень гибкий),но про читабельность просто забывают. smile 
Ладно теперь по делу:
ДобренькийПапаша, у тебя всегда генерируется ноль из-за того что ты забыл про вызов srand()  smile

Добавлено @ 23:15 
А вот теперь,давайте пофлудим  smile 
Конструкции типа
Код

n=(n=(rand() /((RAND_MAX+1)/4) ))-1-1*(n<=1);

уже нехороши хатя бы тем,что два опытных программиста начинают спорить про их работаспасобность.Сегодня пусть эта конструкция работает,а завтра в попых чуть-чуть измененная уже не будет.Т е мы стоим на грани(если не перешли) практически безпречинно.Я не говорю ,что код надо упрощать до предела,просто во всем еадо знать меру. smile  

Это сообщение отредактировал(а) nikitao - 29.4.2006, 23:11


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
BreakPointMAN
Дата 29.4.2006, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ммм... наверное, прав... пошел я читать Стандарт и Алену C++.. smile 


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Kuber
Дата 29.4.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 7.4.2006
Где: #vingrad

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



Думаю это не совсем к теме.smile
Люблю С++ за то(еще много за чтоsmile) что одно решение можно представить различными способами коих множество. Наверное многие тоже такого мнения. 
--------------------
Если меня угораздило написать что то умное и вам понравилось, то не забудте нажать [-]...:)    
PM ICQ   Вверх
Fin
Дата 29.4.2006, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


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

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



nikitao, srand нужен только для того, чтобы сбить генератор псевдослучайных чисел. Он никак не решает проблему 0.

Добавлено @ 23:29 
А что мне действительно нравится, так эта конструкция
Код

        if(n=1) i++;
        if(n=1) j+2; 
        if(n=1) a[i+1][j+2]=false;
        if(n=1 && a[i+1][j+2]) knight(i,j,n,a); 
        cout<<n<<endl;
        if(n=2) i+2;
        if(n=2) j++;
        if(n=2) a[i+2][j+1]=false;
        if(n=2 && a[i+2][j+1]) knight(i,j,n,a);
        cout<<n<<endl;
  

Это сообщение отредактировал(а) Fin - 29.4.2006, 23:50


--------------------
Пролетал мимо.
PM MAIL   Вверх
nikitao
Дата 29.4.2006, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Fin, или я тебя не понял или ты говоришь не правду:
Код

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    int x=rand();
    cout<<x;
    getch();
}

У меня всегда при запуске выдаёт 41,а у тебя будет выдовать другое,но постоянное число smile  


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Fin
Дата 29.4.2006, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


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

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



nikitao, Вот именно. Что постоянное число.  Произведи свой эксперемент дальше. И увидеш, что числа будут меняться. 
Код

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    int x;
    for(int i=0; i<4; i++)
    {
          x=rand();
          cout<<x << endl;
    }
    getch();
}


Чтобы этого не происходило при каждом запуске программы, ставят в самом начале вызов функции srand.  

Это сообщение отредактировал(а) Fin - 29.4.2006, 23:39


--------------------
Пролетал мимо.
PM MAIL   Вверх
nikitao
Дата 29.4.2006, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



 smile А это в этом смысле. smile  


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Fin
Дата 29.4.2006, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


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

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



Та конструкция из кода, что я привел. Вот она решает проблему. Правда на распечатке должно быть сначало 1, а затем 2. Если учесть, что функция knight(i,j,n,a); никак не влияет на переменную n. 


--------------------
Пролетал мимо.
PM MAIL   Вверх
Helicopterr
Дата 1.5.2006, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Fin)
srand нужен только для того, чтобы сбить генератор псевдослучайных чисел. Он никак не решает проблему 0

  srand() (start rand) инициализирует rand, что необходимо для его работы.  

Код

srand(time(0)); //нужно записать в начале ф-ции
   

Это сообщение отредактировал(а) Helicopterr - 1.5.2006, 06:19


--------------------
people can fly
PM MAIL   Вверх
papam
Дата 1.5.2006, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 2.2.2006
Где: Украина::Запорожь е

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



Добренький папаша могу скинуть готовую прогу!Напиши куда!Тыж мне помогал!!!!!!!!!!!!!!!!!!!!! 
--------------------
No Fucking Future
PM MAIL ICQ   Вверх
Heremum
Дата 1.5.2006, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вы чего тут так извратились? Алгоритм простейший: генерируем с помощью rand() числа от -2 до 2:
Код

...
while(1)
{
    somevalue = rand()%4 - 4;
    if (somevalue == 0)
        somevalue = rand()%4 - 4;
    else
        break;
}
...
 
PM MAIL ICQ   Вверх
Helicopterr
Дата 1.5.2006, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Heremum
а ты результат своего кода видел?
у меня это:
-3, -2, -1, -3, -4, -2, -2, -2, -4
А теперь прочти условие задачи...
+ еще маленькая проблемка эта последовательность (у тебя на компе может быть другой) будет такой же при новом запуске программы. 
Вот мы тут и... как ты там написал? извращаемся?

 


--------------------
people can fly
PM MAIL   Вверх
AISIN
Дата 4.5.2006, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Heremum @  1.5.2006,  18:53 Найти цитируемый пост)
код C++
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:


...
while(1)
{
    somevalue = rand()%4 - 4;
    if (somevalue == 0)
        somevalue = rand()%4 - 4;
    else
        break;
}


Цитата(Helicopterr @  1.5.2006,  23:50 Найти цитируемый пост)
-3, -2, -1, -3, -4, -2, -2, -2, -4

просто нужно     somevalue = rand()%4 - 4; 
исправить на somevalue = rand()%3 -rand()%3
 if (somevalue == 0)
somevalue = rand()%3 -rand()%3
Cразу скажу результата, не видел но должно работать
    

Это сообщение отредактировал(а) AISIN - 4.5.2006, 15:14
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
Heremum
Дата 4.5.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

#include <stdio.h>
#include <stdlib.h>

void main()
{
    int somevalue = rand()%2 - 2;
    for (int i = 0; i < 5000; i++)
    {
        somevalue = rand()%2 - 2;
        if (somevalue == 0)
            somevalue = rand()%2 - 2;
    }
}

Значения в диапозоне [-2; 2].  

Это сообщение отредактировал(а) Heremum - 4.5.2006, 18:06
PM MAIL ICQ   Вверх
Fin
Дата 4.5.2006, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


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

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



Heremum, Я надеюсь, ты условия задачи читал более внимательно, чем все остальные.
Цитата

Итак, как сделать так, чтобы рандились, либо -1, либо -2, либо 1, либо 2.

В данном коде 
Код

        somevalue = rand()%2 - 2;
        if (somevalue == 0)
            somevalue = rand()%2 - 2;

somevalue всегда будет или -1 или -2. Ты никогда не получиш значения 1 или 2. Так что твое высказывание 
Цитата

Вы чего тут так извратились? 

не совсем понятно.

По моему личному мнению, наиболее простой и надежный вариант предложил Void Только его нужно чуть доработать.
Код

int n;
{
    static const int cases[] = {-2, -1, 1, 2};
    n = cases[rand()%4];
}
 


--------------------
Пролетал мимо.
PM MAIL   Вверх
Void
Дата 4.5.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Fin, я не случайно написал так, как написал, а не rand() % 4. Это дает более равномерное распределение в случае ГПСЧ. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Fin
Дата 4.5.2006, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


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

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



Void, В твоем случае, могут быть проблемы с откидыванием дробной части. Так как Все числа целочисленые.

Добавлено @ 23:12 
Сейчас проверил у себя на компиляторе. Два подхода работают. Так что может быть я слишком перестраховываюсь smile . 


--------------------
Пролетал мимо.
PM MAIL   Вверх
Void
Дата 4.5.2006, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Fin, если RAND_MAX достаточно велик (хотя бы 255), проблем не будет. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Fin
Дата 4.5.2006, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


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

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



RAND_MAX стандартно равен 32767

А вот код генератора псевдослучайных чисел, который стандартно поставляется вместе с библиотеками С
Код

#define RAND_MAX 32767

unsigned long next=1;

int rand(void) {
 next=next*1103515245+12345;
 return((unsigned int)(next/65536)%32768);
}

void srand(unsigned int seed) {
 next=seed;
}

Источник: http://algolist.manual.ru/maths/generator/standard.php 


--------------------
Пролетал мимо.
PM MAIL   Вверх
Void
Дата 4.5.2006, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Цитата(Fin @  5.5.2006,  01:22 Найти цитируемый пост)
RAND_MAX стандартно равен 32767

Не совсем. В C99 сказано, что RAND_MAX должен быть не менее 32767. Что, впрочем, ситуации не меняет, спасибо за напоминание smile 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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